在我的线程中,我使用一个设置为“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()
关于Python Selenium 超时异常捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026676/