2012-12-13 18 views
8

Tôi đang chạy một đoạn mã đơn giản tải xuống một trang web thông qua proxy, tuy nhiên đôi khi proxy có thể chậm và điều này có thể gây ra yêu cầu .get (url) của WebDriver để chặn vô thời hạn.Python Selenium WebDriver cách thêm thời gian chờ để nhận hàm (url)

Có một đoạn mã Python đơn giản cho WebDriver sẽ đặt thời gian chờ cho hàm này không? Thông qua tìm kiếm tôi đã chỉ tìm thấy các kỹ thuật làm việc cho java.

driver.get(url) 
+0

Mất bao lâu tải xuống? Tôi đã có những tình huống mà trang xuất hiện khoảng 2 phút sau mà không có bất kỳ vấn đề nào bằng cách sử dụng 'driver.get (URL)' –

Trả lời

4

Các mặt hàng này trong docs

selenium.webdriver.remote.webdriver.set_script_timeout (TIME_TO_WAIT)

Set the amount of time that the script should wait before throwing an error. 

time_to_wait: The amount of time to wait 

Usage: 

driver.set_script_timeout(30) 
+0

Điều đó có vẻ hữu ích nhưng tôi không biết liệu nó có hoạt động cho lệnh ẩn (rõ ràng không?) Của .get () cal. Ngoài ra WebDriver có tài liệu khủng khiếp vì vậy tôi không biết làm thế nào để thực hiện điều đó để bắt lỗi. –

+0

Tôi cũng đang thử "driver.implicitly_wait (5)" nhưng nó không làm gì cả. Tôi chỉ muốn kết thúc cuộc gọi "driver.get (url)" nếu nó vẫn chạy sau thời gian X, nhưng có vẻ như WebDriver đã không thực hiện điều này dễ dàng. Liên kết này không giúp được gì (nó luôn là người đầu tiên xuất hiện): http://code.google.com/p/selenium/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Stars%20Type% 20Status% 20Priority% 20Milestone% 20Owner% 20Summary & groupby = & sort = & id = 687 –

+0

Sẽ rất hữu ích khi biết bạn đang mong đợi điều gì sẽ xảy ra. Sự hiểu biết của tôi là khi thời gian chờ xảy ra một TimeoutException được ném. – srhegde

7

Đối với tất cả các cretents web ra có những gì tôi sử dụng để giải quyết vấn đề này là thế này. Selenium sử dụng thư viện ổ cắm để tôi đặt thời gian chờ trên mô-đun ổ cắm, điều này gây ra lỗi mà chúng tôi có thể sử dụng để gửi phím thoát tới trình duyệt (dừng tải trang):

socket.setdefaulttimeout(2) 
try: 
    driver.get(pageLink) 
except socket.timeout: 
    #send ESCAPE key to browser 
+0

Không thực sự là ý tưởng hay khi đặt thời gian chờ của ổ cắm toàn cầu. – erm3nda