【问题标题】:Python Selenium Timeout Exception CatchPython Selenium 超时异常捕获
【发布时间】:2016-07-01 19:14:15
【问题描述】:

在我的线程中,我使用一个简单的变量设置为“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 小时左右发生一次的问题,因此很难分开,但我认为这可能适合。

【问题讨论】:

  • 很多文字,但是什么是问题?)如何拦截TimeOutException或什么?

标签: python selenium web-scraping


【解决方案1】:

除了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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多