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

时间:2019-04-24 09:29:21

标签: linux angular protractor gitlab-ci e2e-testing

我正在使用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}}));
  }
};

希望大家能帮助我解决我的问题,非常感谢您的回答。

3 个答案:

答案 0 :(得分:0)

通过在Linux服务器上安装chrome修复了该问题,未找到其他解决方案

答案 1 :(得分:0)

如果您的Chrome未安装在标准位置,则可能必须在protractor.conf.js中明确指定它:

capabilities: {
    'browserName': 'chrome',
    "chromeOptions": {
      binary: "/Applications/your_path/Google Chrome.app/Contents/MacOS/Google Chrome"
    },
  },

OR

您可以使用chromeoptions

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

答案 2 :(得分:0)

我删除了chromeOptions中的二进制字段,并在MacOS上找到了已安装的Chrome。