Tôi đang thử nghiệm một trang web có nhiều proxy và vấn đề là một số proxy đó rất chậm. Do đó, mã của tôi bị kẹt khi tải trang mỗi lần rồi.Thiết lập thời gian chờ thực để tải trang trong Selenium WebDriver?
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("someElement")
Tôi đã thử rất nhiều thứ như explicit waits
hay implicit waits
và đã tìm kiếm xung quanh cho khá trong một nhưng vẫn chưa tìm thấy một giải pháp hoặc cách giải quyết. Không có gì thực sự ảnh hưởng đến dòng tải trang browser.get("http://example.com/example-page.php")
và đó là lý do tại sao nó luôn bị kẹt ở đó.
Có ai có giải pháp cho việc này không?
Cập nhật 1: Câu trả lời
JimEvans' giải quyết vấn đề trước đây của tôi, và here bạn có thể tìm vá python cho tính năng mới này.
vấn đề mới:
browser = webdriver.Firefox()
browser.set_page_load_timeout(30)
browser.get("http://example.com/example-page.php")
element = browser.find_element_by_id("elementA")
element.click() ## assume it's a link to a new page http://example.com/another-example.php
another_element = browser.find_element_by_id("another_element")
Như bạn thấy browser.set_page_load_timeout(30)
chỉ ảnh hưởng đến browser.get("http://example.com/example-page.php")
có nghĩa là nếu trang này tải trong hơn 30 giây nó sẽ ném ra một ngoại lệ thời gian chờ, nhưng vấn đề là nó không có sức mạnh trên tải trang như element.click()
, mặc dù nó không chặn cho đến khi trang mới hoàn toàn tải lên, another_element = browser.find_element_by_id("another_element")
là nỗi đau mới trong ass, bởi vì explicit waits
hoặc implicit waits
sẽ chờ cho toàn bộ trang tải lên trước khi bắt đầu tìm kiếm yếu tố đó. Trong một số trường hợp cực đoan, điều này sẽ mất ngay cả HOURS. Tôi có thể làm gì với nó?
Tuyệt! Chắc chắn một tính năng tốt đẹp để có. –
@JimEvans: Cảm ơn bạn đời, tôi vừa tìm thấy bản vá python cho http://code.google.com/p/selenium/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Stars%20Type% này 20Status% 20Priority% 20Milestone% 20Owner% 20Summary & groupby = & sort = & id = 687, và nó hoạt động rất tốt. – Shane
@JimEvans: Này, hãy kiểm tra cập nhật của tôi. Có một vấn đề mới làm phiền tôi. – Shane