一尘不染

如何检测Selenium何时加载浏览器的错误页面

selenium

是否存在检测selenium浏览器何时打开错误页面的通用方法?例如,禁用您的互联网连接并执行

driver.get("http://google.com")

在Firefox中,Selenium将加载“重试”错误页面,其中包含诸如“
Firefox无法在www.google.com上建立与服务器的连接”之类的文本。selenium不会引发任何错误。

是否存在与浏览器无关的方法来检测这些情况?对于Firefox(Python),我可以做

if "errorPageContainer" in [ elem.get_attribute("id") for elem in driver.find_elements_by_css_selector("body > div") ]

但是(1)这似乎有点计算过头(请参阅下面的要点),(2)我必须为每个浏览器创建自定义代码。

如果您禁用互联网并使用htmlunit作为浏览器,则将获得包含以下html的页面

<html>
    <head></head>
    <body>Unknown host</body>
</html>

我怎么能不做发现

if driver.find_element_by_css_selector("body").text == "Unknown host"

似乎在每个页面加载时进行检查都非常昂贵,因为正文中通常会有大量文本。

如果您还知道一种检测负载问题类型的方法(例如,没有互联网连接,主机不可达等),则可以加分。


阅读 500

收藏
2020-06-26

共1个答案

一尘不染

WebDriver
API不公开HTTP状态代码
,因此,如果要检测/管理HTTP错误,则应使用调试代理。

请参阅Jim出色的文章《实现WebDriver
HTTP状态》,
以了解具体的操作方法。

2020-06-26