【问题标题】:Azure pipeline throws “Chrome failed to start: crashed.” error on npm test script commandAzure 管道抛出“Chrome 无法启动:崩溃”。 npm 测试脚本命令出错
【发布时间】:2021-02-17 11:15:24
【问题描述】:

我正在尝试在 Azure DevOps 管道中运行测试脚本,并且一直在努力让 selenium 运行 Chrome。我总是收到以下错误:

WebDriverError: unknown error: Chrome failed to start: crashed.
(unknown error: DevToolsActivePort file doesn't exist)

我看过很多类似的问题,但没有运气。这只发生在 Azure DevOps 管道上。它适用于我的本地,如果我登录服务器并从构建代理中找到源代码,我可以成功运行“npm run test”。

这是来自 Azure DevOps 的详细错误日志:

Error Log

下面是运行脚本时触发的 JavaScript 代码:

const { Given, When, Then, AfterAll } = require('@cucumber/cucumber');
const { until, Builder, By, Capabilities } = require('selenium-webdriver');
const { expect } = require('chai');

// WebDriver Setup (for Chrome)
const capabilities = Capabilities.chrome();

const chrome = require('selenium-webdriver/chrome');
const chromeService = chrome.setDefaultService(new chrome.ServiceBuilder('chromedriver.exe').build())
const options = new chrome.Options();
options.addArguments('--headless');
options.addArguments('--no-sandbox');
options.addArguments('--disable-dev-shm-usage');
const driver = new Builder().withCapabilities(capabilities)
                            .setChromeOptions(options)
                            .setChromeService(chromeService)
                            .build();

另外,chrome 驱动和浏览器使用的是同一个版本。

感谢您的帮助。

【问题讨论】:

  • 您使用的是自托管代理,您可以尝试使用托管代理并在此处分享结果和ChromeDriver版本吗?
  • 您好,刚刚检查一下这个问题现在是否仍然阻碍您?这个问题有更新吗?
  • 嗨 Vito,很抱歉回复晚了。是的,我们使用自托管代理,但我会与服务器管理员交谈,看看我们是否可以尝试使用托管代理。感谢您的帮助。

标签: javascript selenium azure-devops


【解决方案1】:

根据报错信息:

WebDriverError: unknown error: Chrome failed to start: crashed.
(unknown error: DevToolsActivePort file doesn't exist)

(The process started from chrome location C:\Program Files(x86)\Google\Chrome\Application\chrome.exe  is no longer running)

这意味着 ChromeDriver 无法启动/生成新的 WebBrowser,即 Chrome 浏览器会话。

您的主要问题是 Chrome 浏览器未安装在系统中的默认位置。

服务器(即 ChromeDriver)希望您将 Chrome 安装在每个系统的默认位置,如下图所示:

您可以查看ticket 了解更多详情。

【讨论】:

  • 嗨维托,感谢您的回复。我对可以在服务器上安装 chrome 的位置没有太多控制,但是如果我覆盖 Chrome 二进制位置,作为您提供的票证的解决方案的一部分,我仍然会遇到相同的错误。这是我的 JavaScript 代码:options.setChromeBinaryPath('C://Program Files (x86)//Google//Chrome//Application//chrome.exe')
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 2020-09-29
  • 2022-01-11
  • 2018-02-08
  • 2014-10-08
  • 2019-05-23
  • 1970-01-01
  • 2023-01-19
相关资源
最近更新 更多