Python Selenium Timeout Exception Catch

时间:2016-03-16 04:14:13

标签: python selenium web-scraping

在我的帖子中,我使用一个简单的变量,设置为' 1'或者' 0' 0表明它是否准备再次出现。试图调试一个问题,有时这不会被重置,我想我可能会有。

我不希望连接超时到一些无限的加载时间(我相信Selenium的默认设置不会超时)所以我使用了:

Driver.set_page_load_timeout(30)

稍后在那个帖子中我会检查

If condition:
 isrunning = 0

我原本以为set_page_load_timeout会在30秒后停止加载但是如果我正确理解它会实际抛出异常,所以我需要做类似的事情:

try:
  Driver.set_page_load_timeout(30)
except:
  isrunning = 0
  Driver.Close()

-Do whatever else in function -
If condition:
  isrunning = 0
  Driver.Close()

因此,如果它运行超过30秒,它将关闭并设置为0,否则它将继续运行并检查并稍后设置为0.

我很欣赏这是一小段代码,但完整的东西很长,我认为这是重要的部分。

如果有人能确认我在这里有正确的想法,我会很感激。我全力以赴进行测试,但这是一个每8个小时左右发生一次的问题,因此难以分开,但我认为这可能很合适。

1 个答案:

答案 0 :(得分:19)

除了Driver.Close()之外,您的代码几乎正常运行。它应该是Driver.close()。在特定时间内未加载页面时,将抛出TimeoutException。请参阅下面的代码:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException

Driver = webdriver.Firefox()
try:
    Driver.set_page_load_timeout(1)
    Driver.get("http://www.engadget.com")
except TimeoutException as ex:
    isrunning = 0
    print("Exception has been thrown. " + str(ex))
    Driver.close()