【问题标题】:How can I catch errors thrown by only selenium?如何捕获仅由 selenium 引发的错误?
【发布时间】:2022-01-30 16:39:42
【问题描述】:

我正在使用 selenium 进行网络抓取,有时,网站上会出现意外警报,这会破坏脚本。
警报是一种错误;有时,页面没有正确加载,selenium 由于服务器性能问题而找不到元素。

所以我正在考虑添加一个 try/except 块,这样每当 selenium 出现错误时,它就会被捕获,并且脚本会重新运行。但我能够捕捉到特定于硒的错误。如何捕获仅由 selenium 引发的错误?

【问题讨论】:

标签: python selenium web-scraping automation


【解决方案1】:

也许在这里抢夺 Selenium 异常?https://www.browserstack.com/guide/exceptions-in-selenium-webdriver

这也可能是相关的org.openqa.selenium.UnhandledAlertException: unexpected alert open

这里有10个常见的例外供参考

  • ElementNotVisibleException: 尽管元素存在于 DOM 中,但它是不可见的(不能交互)。例如,在 HTML 中定义的元素类型为 =”hidden”

  • ElementNotSelectableException: 一个元素被禁用(不能被点击/选择),尽管它存在于 DOM 中

  • NoSuchElementException: Webdriver 在运行时无法确定元素,即 FindBy 方法找不到特定组件

  • NoSuchFrameException: Webdriver 尝试切换到无效帧,该帧不可用

  • NoAlertPresentException: Webdriver 正在尝试切换到无效警报,该警报不可用

  • NoSuchWindowException: Webdriver 正在尝试切换到无效窗口,该窗口不可用

  • StaleElementReferenceException: 被引用的元素不再出现在 DOM 页面上(对组件的引用现在已过时)。例如,该项目属于与当前框架不同的框架,或者用户已导航到另一个页面

  • SessionNotFoundException: Webdriver 在“退出”浏览器后立即采取行动

  • TimeoutException: 命令未在指定时间内完成。例如,元素未在指定时间显示。在使用等待时尤其会遇到这种情况

  • WebDriverException: Webdriver 在“关闭”浏览器后立即起作用

【讨论】:

  • 谢谢,我查看了这些异常,但我不想为 selenium 抛出的每个异常添加新的 except 语句。我正在寻找一些通用的东西,比如添加一个 except 语句,并且所有与 selenium 相关的异常都会被捕获。
猜你喜欢
  • 2011-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2013-06-06
  • 2015-04-22
  • 1970-01-01
  • 2013-10-27
相关资源
最近更新 更多