是否存在检测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"
似乎在每个页面加载时进行检查都非常昂贵,因为正文中通常会有大量文本。
如果您还知道一种检测负载问题类型的方法(例如,没有互联网连接,主机不可达等),则可以加分。
WebDriver API不公开HTTP状态代码,因此,如果要检测/管理HTTP错误,则应使用调试代理。
请参阅Jim出色的文章《实现WebDriver HTTP状态》,以了解具体的操作方法。