Chúng tôi đang sử dụng Selenium với API Java và một số tiện ích mở rộng người dùng Javascript. Chúng tôi sử dụng rất nhiều cuộc gọi AJAX trong ứng dụng của mình. Rất nhiều thử nghiệm của chúng tôi thất bại ngẫu nhiên vì đôi khi các cuộc gọi AJAX kết thúc chậm hơn các lần khác để trang không được tải đầy đủ. Chúng tôi khắc phục điều đó bằng cách đợi các phần tử cụ thể hoặc Thread.sleep. Tôi đã cố gắng tìm một cách để thay vào đó chỉ cần chờ cho lưu lượng truy cập mạng để kết thúc. Vì vậy mà chúng ta có thể làm điều này:Selenium - Đợi lưu lượng truy cập mạng
selenium.click("some JS button");
selenium.waitForNetwork();
assertTrue(something);
Bằng cách đó chúng ta có thể thoát khỏi sợi giấc ngủ và có bài kiểm tra qua nhanh hơn khi máy chủ đáp ứng nhanh hơn và không có quá nhiều thử nghiệm thất bại do các vấn đề thời gian.
Tôi chưa thể tìm cách để thực hiện điều này khi tìm kiếm trên Google. Có ai có bất kỳ ý tưởng làm thế nào chúng ta có thể thực hiện điều này? (Tốt hơn là thông qua Javascript hoặc API Java nhưng tất cả các đề xuất đều được chào đón).
Lưu ý: các biến thể khác của "waitFor" không phải là những gì tôi đang tìm kiếm. Chúng tôi đã sử dụng chúng trong các lần nhấp và những thứ khác. Tôi đang tìm kiếm thứ gì đó chờ đợi cho GIAO THÔNG MẠNG. Cảm ơn tất cả các phản hồi, tôi sẽ thử một vài gợi ý, nhưng tôi vẫn mở cho các ý tưởng khác.
Cảm ơn.
Chúng tôi làm điều tương tự cho khung AJAX được xây dựng trong nhà của chúng tôi, gọi hàm IsTheCountZeroYet() trong WaitForCondition(). Tôi hiểu bạn có thể làm điều đó với jQuery dễ dàng. Các khung công tác khác, cũng có thể. –
Điều thú vị là các bộ đếm ajax trong prototype.js là lỗi, chúng không luôn quay trở lại 0.Và các hiệu ứng hình ảnh không có loại truy cập nào được nêu ra. Vì vậy, chúng tôi đã phải cuộn của riêng mình. – krosenvold