2012-07-12 31 views
11

Tôi đang dịch một số kiểm tra Selenium RC sang Selenium WebDriver bằng cách sử dụng api python. Trong Selenium WebDriver, tôi nhận thấy rằng driver.get('http://...') dường như phải chờ toàn bộ trang tải trước khi tiếp tục. Có cách nào để không đợi trang tải không? Một số trang tôi yêu cầu có nhiều tài nguyên bên ngoài có khả năng mất nhiều thời gian tải. Tôi muốn chờ đợi cho các yếu tố trên DOM để có mặt hơn là chờ đợi cho tất cả mọi thứ để tải. Một số thử nghiệm của tôi dường như mất gấp đôi thời gian trong WebDriver vì điều này.Selenium WebDriver chuyển đến trang mà không cần chờ tải trang

+1

@Slanec Cả hai đều tuyệt vời. Tìm kiếm gian khổ của tôi đã đi đến một kết luận hạnh phúc. –

Trả lời

13

Có và không. Kể từ Selenium 2.24.1, the support for this is only in Firefox - you have to run it in a special "mode":

FirefoxProfile fp = new FirefoxProfile(); 
fp.setPreference("webdriver.load.strategy", "unstable"); 
WebDriver driver = new FirefoxDriver(fp); 

Bạn thậm chí có thể đặt the timeout if you want to. Phương pháp này không thành công trong bất kỳ trình duyệt nào khác ngoài Firefox và không làm gì trong Firefox mà không có chiến lược không ổn định:

driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); 
+1

Cảm ơn. Đã trả lời câu hỏi của tôi hoàn toàn. – Jackson

+0

Ngoài ra, khi bỏ phiếu cho các đối tượng trên trang dự kiến ​​của bạn, nếu bạn sử dụng findElements() thay vì findElement(), bạn có thể tránh con trỏ null bằng cách sử dụng một cái gì đó như 'if findElements() = 0 tiếp tục cố gắng'. – djangofan

+0

Mã tương đương Python cho thời gian chờ tải trang là gì? –

Các vấn đề liên quan