量角器:找不到update-config.json

时间:2018-10-03 13:02:29

标签: typescript selenium protractor cucumber cucumberjs

我已经将通过量角器运行的Cucumber测试转换为TypeScript。如果我从commnad行运行测试,如下所示:

rimraf cucumber/build && tsc -p cucumber && protractor cucumber/build/protractor.conf.js 

这很好,可以成功且正确地运行测试。但是,如果我将这些命令移到脚本中,如下所示:

// package.json
...
"cucumber": "rimraf cucumber/build && tsc -p cucumber && protractor cucumber/build/protractor.conf.js"
...

然后它跌倒并出现以下错误:

[13:54:55] I/launcher - Running 1 instances of WebDriver
[13:54:55] I/direct - Using ChromeDriver directly...
[13:54:55] E/direct - Error code: 135
[13:54:55] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[13:54:55] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.

我对量角器,黄瓜和硒非常陌生,所以我不知道该怎么办!我已经尝试运行update命令,但是没有效果。

我的protractor.conf.ts看起来像这样:

import { Config } from 'protractor';

export let config: Config = {
  allScriptsTimeout: 11000,
  specs: [
    '../features/**/*.feature'
  ],
  seleniumAddress: 'http://localhost:4444/wd/hub',
  capabilities: {
    browserName: 'chrome',
    chromeOptions: {
      args: ["--disable-gpu"]
    }
  },
  directConnect: true,
  baseUrl: 'http://localhost:4200/',
  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),
  jasmineNodeOpts: {
    showColors: true,
    defaultTimeoutInterval: 30000,
  },
  onPrepare() {
    require('ts-node').register({
      project: require('path').join(__dirname, '../tsconfig.json')
    });

    const chai = require('chai');
    const chaiAsPromised = require('chai-as-promised');

    // Load chai-as-promised support
    chai.use(chaiAsPromised);

    // Initialise should API (attaches as a property on Object)
    chai.should();
  },
  cucumberOpts: {
    require: [
      './features/**/steps/*.steps.js'
    ]
  }
};

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这是根据npm scripts设计的。如果在scripts的{​​{1}}块中定义cmd,npm将尝试从项目本地软件包文件夹package.json中查找cmd中使用的可执行二进制文件。

直接在cmd窗口中输入并执行<folder of package.json>/node_modules/.bin时,此处的可执行二进制文件protractor cucumber/build/protractor.conf.js是从protractor环境变量中找到的,而不是从项目本地包文件夹中找到的。

这是在package.json的PATH中找到executable binary而不是package.json的区别。

要解决您的问题,您应该对项目本地软件包执行webdriver-manager更新,这会将scripts创建到项目本地软件包文件夹中。

update-config.json