【问题标题】:Selenium Loss of Internet Exception Handling using Python and Chromedriver使用 Python 和 Chromedriver 进行 Internet 异常处理的 Selenium 丢失
【发布时间】:2018-12-03 11:50:49
【问题描述】:

我希望我的代码能够处理互联网中断一段时间的情况。目前我正在使用带有 TimeoutException 的 try/except 子句,但这不起作用,因为 Chrome 在没有互联网时不会超时,它只会返回此页面:

没有网络

试试:

  • 检查网线、调制解调器和路由器

  • 重新连接到 Wi-Fi

ERR_INTERNET_DISCONNECTED

由于没有超时,我的代码只是继续搜索元素,并没有捕捉到互联网的丢失。

当 chrome 中没有互联网时,是否会引发异常?


代码:

driver = webdriver.Chrome(executable_path=mypath)
driver.implicitly_wait(10)    
driver.set_page_load_timeout(10)

try:  
    driver.get(url)
    elem = driver.find_element_by_xpath(xpath).get_attribute("content")

except TimeoutException:
    print('TimeoutException')

【问题讨论】:

  • @debanjanb,这个问题与 NETERROR 错误页面无关,我没有尝试导航到任何其他选项卡,请您解释一下为什么添加重复标签?
  • 重新打开问题。

标签: python-3.x selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

也许你可以检测元素 No Internet 是否存在

def has_connection(driver):
    try:
        driver.find_element_by_xpath('//span[@jsselect="heading" and @jsvalues=".innerHTML:msg"]')
        return False
    except: return True

driver = webdriver.Chrome()
driver.get("https://www.google.com")

if not has_connection(driver):
    print('No Internet connection, aborted!')
    driver.quit()
    exit()

# connection is good continue
elem = driver.find_element_by_xpath(xpath).get_attribute("content")

【讨论】:

  • 非常感谢,我可以看到这可能是一个有用的解决方法 - 但在没有互联网连接的情况下,这不会依赖谷歌浏览器为这些实例保留该页面格式吗?我正在尝试使代码尽可能健壮,所以我犹豫要测试没有互联网页面上的元素。
  • 这只是最简单的方法,还有更多方法,但 selenium 本身没有检测连接是否断开的选项或功能。
猜你喜欢
  • 2017-05-24
  • 1970-01-01
  • 2020-06-22
  • 2020-04-25
  • 1970-01-01
  • 2021-07-16
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多