在我的线程中,我使用一个设置为“1”或“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 小时左右出现一次的问题,很难区分,但我认为这可能适合。
除了
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()
这应该有效
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
try:
Driver.set_page_load_timeout(1)
Driver.get("http://www.engadget.com")
except TimeoutException
pass
isrunning = 0
Driver.close()