Python Selenium 超时异常捕获

标签 python selenium web-scraping

在我的线程中,我使用一个设置为“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/

相关文章:

python - 如何更改Python中类的模块?

javascript - 检查 JavaScript 代码的哪一部分正在呈现特定的 Html 元素?

xpath - 谷歌电子表格中的亚马逊价格

asp.net - 阻止自动化工具访问网站

javascript - Selenium:滚动到页面末尾

python - python中的try语句放在哪里

python - 如何使用 wide-build 在 Mac 上安装 python

python - 织物跑叉

java - Selenium Webdriver 和 Java。元素在点 (x, y) 处不可单击。其他元素将收到点击

java - 单击图像时出现 “Element is not clickable at point” - Selenium WebDriver Java