当前位置:   article > 正文

selenium自动化DevTools连接断开问题_message: disconnected: not connected to devtools

message: disconnected: not connected to devtools

使用Selenium的无头模式下,出现了DevTools连接断开的问题:

报错如下所示:

  1. self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002455732EA70>
  2. response = {'status': 500, 'value': '{"value":{"error":"disconnected","message":"disconnected: not connected to DevTools\\n (fai...unk [0x75EA6BA9+25]\\n\\tRtlGetFullPathName_UEx [0x77588F9F+1215]\\n\\tRtlGetFullPathName_UEx [0x77588F6D+1165]\\n"}}'}
 selenium.common.exceptions.WebDriverException: Message: disconnected: not connected to DevTools

以上问题属于DevTools连接超时自动中断了,可能出现的问题:

1. 版本不匹配:Selenium与浏览器或驱动程序的版本可能不兼容。请确保使用的Selenium版本与浏览器和驱动程序的版本相匹配。

2. 驱动程序问题:检查所使用的浏览器驱动程序是否正确安装和配置。确保驱动程序与所使用的浏览器版本兼容,并且在运行脚本之前已正确启动。

3. 网络问题:确保网络连接正常,没有任何防火墙或代理设置干扰与浏览器的通信。

4. 其他问题:暂未找到可能出现的其他原因,可以通过不同浏览器火狐、edge等看看是否重现。

我这边的出现的问题在调用webdriver自带的刷新方法时中断连接

  1. def page_refresh_all(self):
  2. """
  3. 整个页面刷新,全页面
  4. :return:
  5. """
  6. self.driver.refresh()
  7. time.sleep(2)

解决方案:

前置:当浏览器版本与驱动版本一致时,若不一致同步更新一致

1、增加连接超时时间:在创建浏览器实例时,增加连接超时时间。设置desired_capabilities增加连接超时时间: 设置的3秒可增加时间。

  1. from selenium import webdriver
  2. chrome_options = webdriver.ChromeOptions()
  3. chrome_options.add_argument('--headless')
  4. desired_capabilities = chrome_options.to_capabilities()
  5. desired_capabilities['pageLoadStrategy'] = 'none'
  6. desired_capabilities['timeouts'] = {'implicit': 3000, 'pageLoad': 3000, 'script': 3000}
  7. driver = webdriver.Chrome(desired_capabilities=desired_capabilities)

2、禁用沙盒模式:启用无头模式时,谷歌浏览器会在沙盒模式下运行,这会导致DevTools连接断开。尝试禁用沙盒模式,看看是否能够解决问题。在创建浏览器实例时,可以通过设置chromeOptions来禁用沙盒模式:

  1. from selenium import webdriver
  2. chrome_options = webdriver.ChromeOptions()
  3. chrome_options.add_argument('--headless')
  4. chrome_options.add_argument('--no-sandbox')
  5. driver = webdriver.Chrome(chrome_options=chrome_options)

3、禁用插件:其他可能的冲突:其他正在运行的程序或插件可能会干扰Selenium与DevTools之间的通信,关闭其他可能干扰的程序或插件。

options.add_argument("--disable-extensions")

4、对代码中断部分添加异常处理。

  1. def page_refresh_all(self):
  2. """
  3. 整个页面刷新,全页面
  4. :return:
  5. """
  6. time.sleep(1)
  7. try:
  8. # 判断是否已经连接到DevTools,如果未连接则重新建立连接
  9. self.driver.execute('Browser.getVersion', {})
  10. except Exception as e:
  11. # 如果连接断开,则重新创建浏览器实例
  12. self.driver.quit()
  13. # 在重新创建浏览器实例之前,可以添加一些等待时间或其他处理
  14. time.sleep(3)
  15. self.driver = webdriver.Chrome()
  16. # 可以设置其他的浏览器选项,例如设置无头模式、添加启动参数等
  17. # self.driver = webdriver.Chrome(options=chrome_options)
  18. self.driver.refresh()
  19. time.sleep(2)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/189324
推荐阅读
相关标签
  

闽ICP备14008679号