错误:执行带有watir的ruby脚本时,出现未知错误:DevToolsActivePort文件不存在。

5

我对Centos7还比较新,正在尝试在以下环境中开发浏览器自动化解决方案:

操作系统:Centos7 Ruby版本:2.6 Watir 浏览器:Google Chrome 72.0.3626.109 驱动程序:ChromeDriver 2.46.628388

我的脚本:

require 'watir'

# Initialize the browser with the driver path
site="https://google.com"
browser = Watir::Browser.new :chrome
browser.goto site

出现错误:
`assert_ok': unknown error: Chrome failed to start: exited abnormally (Selenium::WebDriver::Error::UnknownError)
  (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.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 3.10.0-957.5.1.el7.x86_64 x86_64)

我在网上找到了多个解决方案,都建议修改Chrome选项,例如:

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

但我不知道在哪里设置它们。我能找到的最近的解决方法是这里提供的答案:如何使用Python向Selenium Chrome驱动程序传递选项?

有人能否请以逐步方式帮助我解决这个问题?


访问http://chromedriver.chromium.org/capabilities了解Chrome的功能。查看http://watir.com/watir-6-6/以了解如何在`watir`中使用它们。在实例化浏览器时尝试使用`Watir :: Browser.new:chrome,:args => [“--no-sandbox”]`。 - orde
我按照您的说明尝试传递参数,但错误仍然相同:/usr/local/rvm/gems/ruby-2.6.0/gems/selenium-webdriver-3.141.0/lib/selenium/webdriver/remote/response.rb:69:in `assert_ok': 未知错误:Chrome启动失败:异常退出(Selenium::WebDriver::Error::UnknownError) (未知错误:DevToolsActivePort文件不存在) (从chrome位置/usr/bin/google-chrome启动的进程不再运行,因此ChromeDriver假定Chrome已崩溃。) - Nishant Kansal
嗯...可能要尝试最新的Chrome浏览器和Chromedriver。或者检查Chromedriver日志:http://chromedriver.chromium.org/logging。祝你好运。 - orde
1个回答

1
同样遇到了类似的问题,但是是在npm和protractor配置方面,但我想解决方案应该是相似的。您需要在Linux系统中安装Chrome浏览器。chromedriver只是一个包装器,用于运行测试用例使用的Chrome浏览器。
另外,如果已经安装了Google Chrome,您可能需要检查它在Linux操作系统中的安装路径,期望路径位于/usr/bin/google-chrome下。这个文件通常是指向Chrome二进制文件的链接。
希望这可以帮助您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接