无法在非无头模式ChromeDriver和Chrome上运行Selenium测试

时间:2019-07-31 13:16:34

标签: python selenium google-chrome selenium-chromedriver

我想使用硒和铬浏览器运行测试,但出现此错误

Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.4.0-31-generic x86_64)

在堆栈溢出的许多答案中,建议使用无头镀铬。我使用了它,它在无头模式下工作得很好,但是问题是我不想在无头模式下运行测试吗?

这是我的浏览器选项

chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")     
chrome_options.add_argument("start-maximized")        
chrome_options.add_argument("disable-infobars")        
chrome_options.add_argument("--disable-extensions")        
chrome_options.add_argument("--disable-gpu")

我希望在非无头模式下运行测试。

1 个答案:

答案 0 :(得分:-1)

此错误消息...

Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
  (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.4.0-31-generic x86_64)

...表示 ChromeDriver 无法启动/产生新的 WebBrowser ,即 Chrome浏览器会话。

您的主要问题是通过Options类的实例,即 chrome_options ,在 WebDriver 配置中的不兼容性 >

从日志中可以清楚地看到您正在使用基于 Linux 的系统:

platform=Linux 4.4.0-31-generic x86_64
Linux系统 MacOS 上不需要

根据Headless: make --disable-gpu flag unnecessary --disable-gpu标志。您可以在How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?

中找到详细的讨论

最后,根据最佳实践,您需要确保:

  • 已升级到当前级别Version 3.141.59
  • ChromeDriver 已更新为当前的ChromeDriver v76.0级别。
  • Chrome 已更新为当前的 Chrome版本76.0 级别。 (根据ChromeDriver v76.0 release notes
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 如果您的基本 Web客户端版本过旧,请通过Revo Uninstaller进行卸载,并安装最新版本的 Web客户端。 li>
  • 以非root用户身份执行Test
  • 始终在driver.quit()方法内调用tearDown(){},以优雅地关闭和销毁 WebDriver Web Client 实例。