【问题标题】:Protractor: Could not find update-config.json量角器:找不到 update-config.json
【发布时间】:2019-03-08 17:18:50
【问题描述】:

我已将通过 Protractor 运行的 Cucumber 测试转换为 TypeScript。如果我从命令行运行测试,如下所示:

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.

我对 Protractor 和 Cucumber 以及 Selenium 很陌生,所以我不知道该怎么做!我试过运行更新命令,但没有效果。

我的 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'
    ]
  }
};

有人可以帮忙吗?

【问题讨论】:

  • 你能显示量角器配置吗?同样正如错误所说,运行 webdriver-manager update 命令,以便它可以生成带有浏览器驱动程序本身位置的 webdriver 配置文件。
  • 好的,已添加;正如我在原帖中所说,我已经尝试运行更新命令。
  • 执行以下命令:node ./node_modules/protractor/bin/webdriver-manager update

标签: typescript selenium protractor cucumber cucumberjs


【解决方案1】:

这是为npmscripts设计的。如果您在package.json 中的scripts 块中定义cmd,npm 将尝试从项目本地包文件夹<folder of package.json>/node_modules/.bin 中查找cmd 中使用的可执行二进制文件。

当你直接在cmd窗口输入并执行protractor cucumber/build/protractor.conf.js时,这里的可执行二进制文件:protractor是从PATH环境变量中找到的,而不是从项目本地包文件夹中找到的。

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

要解决您的问题,您应该对项目本地包执行 webdriver-manager 更新,这将在项目本地包文件夹中创建 update-config.json

"cucumber": "rimraf cucumber/build && tsc -p cucumber && webdriver-manager update && protractor cucumber/build/protractor.conf.js"

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2018-09-23
    • 2015-01-31
    • 2022-07-30
    • 2013-10-23
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多