【问题标题】:how to recover from socket.timeout error is selenium(python)如何从 socket.timeout 错误中恢复是 selenium(python)
【发布时间】:2015-02-17 17:15:01
【问题描述】:

我正在使用 selenium 2.44 和 firefox 34.0,测试是在一个显示不一致行为的网站上进行的:某些页面加载导致 socket.timeout 错误(firefox 加载图标一直在旋转)。 在此错误之后,对驱动程序对象的任何调用都会导致 httplib.CannotSendRequest 因此我无法从错误中恢复并继续测试流程。

据此: httplib CannotSendRequest error in WSGI

驱动程序对象可能正在等待加载过程完成并且不允许访问该对象。

问题是如何从这个错误中恢复?

理想的解决方案是关闭出现问题的窗口并通过加载下一页继续测试。问题是我不能使用 driver.close() 因为描述的驱动程序对象是不可访问的。 driver.current_url 也无法访问,因此我无法找到当前的驱动程序测试位置。我正在考虑的最后一招是在每次加载之前存储所有窗口句柄的最后一个 URL,并在发生异常时重新创建驱动程序并加载所有窗口(在该窗口之后出现错误)。

这当然是一个次优的解决方案,但它是不可避免的吗?

【问题讨论】:

  • 你解决了吗?这似乎是我面临的一个错误,我迷路了。
  • @MichaelJones 请参阅stackoverflow.com/help/no-one-answers,了解如何获得对问题的更多关注。顺便说一句:即使您不是原作者,也可以使用附加信息编辑问题。

标签: python selenium


【解决方案1】:

我的最终解决方案如问题中所述,我刚刚创建了一个新的 webdriver 实例并继续加载其中的页面。 有故障的 webdriver 窗口(有时不止一个)在运行结束之前一直保持打开状态,但会被忽略。如果您有多个页面,您可以存储所有窗口的 URL(在 driver.get('URL') 命令之前)并重新加载它们以防出现此错误。 这不是最佳解决方案,但它确实有效。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2012-01-21
    • 2021-02-15
    • 2016-07-24
    • 1970-01-01
    • 2017-07-27
    • 2017-03-19
    • 2016-06-19
    • 2021-12-15
    相关资源
    最近更新 更多