E2E 测试失败错误:在 Linux 中找不到 chrome 二进制文件

Rob*_*ann 4 linux protractor gitlab-ci e2e-testing angular

我正在使用 angular 为 gitlab-ci 管道设置 e2e 测试(量角器),实际上我是这个主题的新手。我还希望测试是无头的,因为 Gitlab-ci 所在的服务器正在 Linux 上运行。

但我总是收到这个错误:

E/启动器 - 未知错误:找不到 Chrome 二进制文件。

对我来说,这毫无意义,因为它编译成功并下载、解压缩 Chromedriver 并获得 1 个正在运行的 Webdriver 实例,但随后它因提到的错误而崩溃。

另外我应该提到的是它在本地工作,但是当我推送它时,它没有。

我已经尝试了一些我发现的东西,比如用“--no-sandbox”编辑 protractor.conf.js 但它对我不起作用。

在这里你可以看到我的 protractor.conf.js

const {SpecReporter} = require('jasmine-spec-reporter');

exports.config = {
  allScriptsTimeout: 11000,
  specs: [
    './src/**/*.e2e-spec.ts'
  ],
  capabilities: {
    browserName: 'chrome', chromeOptions: {
      args: [
        '--headless',
        '--disable-gpu',
        '--window-size=800,600',
      ]
    }
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'jasmine',
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
    print: function () {
    }
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, './tsconfig.e2e.json')
    });
    jasmine.getEnv().addReporter(new SpecReporter({spec: {displayStacktrace: true}}));
  }
};
Run Code Online (Sandbox Code Playgroud)

我希望你们能帮助我解决我的问题,我非常感谢你的回答。

小智 5

如果您的 Chrome 没有安装在标准位置,您可能需要在 protractor.conf.js 中明确指定它:

capabilities: {
    'browserName': 'chrome',
    "chromeOptions": {
      binary: "/Applications/your_path/Google Chrome.app/Contents/MacOS/Google Chrome"
    },
  },
Run Code Online (Sandbox Code Playgroud)

或者

您可以使用 chromeoptions:

ChromeOptions ChromeOptions = new ChromeOptions();
ChromeOptions.addArguments("--headless", "window-size=1024,768", "--no-sandbox");
driver = new ChromeDriver(ChromeOptions);
Run Code Online (Sandbox Code Playgroud)


Rob*_*ann 1

通过在linux服务器上安装chrome来修复它没有找到其他解决方案