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

use*_*679 7 firefox selenium htmlunit

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

driver.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)

在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") ]
Run Code Online (Sandbox Code Playgroud)

但是(1)这看似计算过度(见下面的下一点)和(2)我必须为每个浏览器创建自定义代码.

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

<html>
    <head></head>
    <body>Unknown host</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何在不做的情况下检测到这一点

if driver.find_element_by_css_selector("body").text == "Unknown host"
Run Code Online (Sandbox Code Playgroud)

看起来这将是检查每一个页面加载因为通常会是一吨在正文的非常昂贵的.

如果您还知道检测负载问题类型的方法,例如没有互联网连接,无法访问的主机等,则可以获得奖励积分.

Fai*_*aiz 5

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

请参阅Jim 关于如何做到这一点的优秀帖子实现WebDriver HTTP状态.