Trang web mà tôi đang thử nghiệm đang sử dụng loại trực tiếp. Trên các trang khác trên trang web của chúng tôi hiện không sử dụng loại trực tiếp, tôi không gặp phải vấn đề tương tự. Kịch bản tôi có là nơi trang mở ra, tôi nhập vào các trường bắt buộc khác nhau và nhấp vào nút lưu. Tại một số điểm giữa khi nó nhập vào một giá trị trong trường văn bản cuối cùng và khi nó nhấp vào nút lưu, các trường trước đây có giá trị sẽ bị xóa, và do đó tập lệnh không thể tiếp tục. Dưới đây là ví dụ về mã mà tôi đang chạy:selenium webdriver đang xóa các trường sau khi sendKeys đã điền trước đó
driver.findElement(By.id("sku")).clear();
driver.findElement(By.id("sku")).sendKeys(itemNo);
driver.findElement(By.id("desktopThankYouPage")).clear();
driver.findElement(By.id("desktopThankYouPage")).sendKeys(downloadUrl);
driver.findElement(By.id("mobileThankYouPage")).clear();
driver.findElement(By.id("mobileThankYouPage")).sendKeys(mobileDownloadUrl);
driver.findElement(By.id("initialPrice")).clear();
driver.findElement(By.id("initialPrice")).sendKeys(initialPrice);
driver.findElement(By.id("submitSiteChanges")).click();
Như tôi đã nói, thời gian nhập văn bản vào trường cuối cùng và thời gian nhấp vào lưu các trường trước đó có văn bản trong đó sẽ bị xóa và do đó thử nghiệm của tôi không thành công. Vấn đề là nó không phải lúc nào cũng xảy ra. Đôi khi thử nghiệm chạy tốt, thời gian khác nó không.
Tôi đã thử đặt Thread.sleep (x); trên tất cả các nơi để xem liệu tạm dừng tại các điểm nhất định có khắc phục được sự cố không. Tôi cũng đã thử sử dụng javascript để chờ trong nền cho bất kỳ ajax có thể đang chạy. Cũng có sự chờ đợi tiềm ẩn của driver.manage(). Timeouts(). ImplicitlyWait (10, TimeUnit.SECONDS). Không ai trong số đó dường như đã tạo ra bất kỳ sự khác biệt nào.
Tôi đang chạy phiên bản 2.13 của máy chủ selen và tất cả các thử nghiệm của tôi chạy trên Firefox 8.
Bất kỳ giúp đỡ về vấn đề này sẽ được đánh giá rất nhiều!
Bạn đã xác nhận rằng các giá trị đang được đặt thực sự được đặt như thế nào. Điều gì xảy ra trong mã KO của bạn sau khi bạn nhấp vào gửi? Các phần tử dom ràng buộc với KO có được hiển thị như một phần của mẫu không? – madcapnmckay
Có, tôi đã xác minh rằng các giá trị có mặt trong các trường trước khi nhấp vào nút gửi. Trong thực tế đôi khi thử nghiệm vượt qua. Nút gửi lấy đối tượng bị ràng buộc của chúng tôi và chuyển đổi nó thành JSON và gửi nó qua ajax đến API của chúng tôi. Dường như trước khi chúng tôi tạo JSON, trình điều khiển web sẽ xóa một số trường. –
Tôi nghi ngờ rằng trình điều khiển web đang xóa các trường. Khả năng nhiều khả năng là trang của bạn đang xóa các trường do vấn đề về thời gian hoặc có thể là lỗi trong mã xử lý sự kiện, tuy nhiên bạn đã đề cập việc thêm ngủ dường như không khắc phục được sự cố. Bạn đã thêm một giấc ngủ rất dài (30 giây) trước khi nhập văn bản vào bất kỳ trường nào để loại trừ hoàn toàn vấn đề về thời gian? Bạn có thêm trễ hai giây giữa việc nhập văn bản vào từng trường để loại trừ vấn đề về thời gian không? –