STS IDE中的量角器 - >找不到update-config.json

EdX*_*dXX 27 javascript json webdriver protractor webdriver-manager

目前我有Protractor v.5.1.1,Node.js v.6.10.0

所有量角器测试都在窗口控制台中工作,但是当我尝试从STS IDE运行它时,我得到以下错误.当然我做了'webdriver-manager update',但它根本没用.有谁知道如何解决这个问题?

当我使用或不使用'directConnect'时分别低于错误

[22:21:48] I/launcher - Running 1 instances of WebDriver
[22:21:48] I/direct - Using ChromeDriver directly...
[22:21:48] E/direct - Error code: 135
[22:21:48] E/direct - Error message: Could not find update-config.json. Run    'webdriver-manager update' to download binaries.
[22:21:48] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
at IError  (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:5:1)
at ProtractorError (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:10:9)
at BrowserError (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:51:9)
at Direct.getNewDriver (D:\STS_workspace\jgh\node_modules\protractor\built\driverProviders\direct.js:62:31)
at Runner.createBrowser (D:\STS_workspace\jgh\node_modules\protractor\built\runner.js:194:43)
at q.then.then (D:\STS_workspace\jgh\node_modules\protractor\built\runner.js:338:29)
at _fulfilled (D:\STS_workspace\jgh\node_modules\q\q.js:834:54)
at self.promiseDispatch.done (D:\STS_workspace\jgh\node_modules\q\q.js:863:30)
at Promise.promise.promiseDispatch (D:\STS_workspace\jgh\node_modules\q\q.js:796:13)
at D:\STS_workspace\jgh\node_modules\q\q.js:556:49
[22:21:48] E/launcher - Process exited with error code 135
Run Code Online (Sandbox Code Playgroud)

要么

[21:19:23] I/launcher - Running 1 instances of WebDriver
[21:19:23] E/local - Error code: 135
[21:19:23] E/local - Error message: No update-config.json found. Run    'webdriver-manager update' to download binaries.
[21:19:23] E/local - Error: No update-config.json found. Run 'webdriver- manager update' to download binaries.
   at IError (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:5:1)
   at ProtractorError (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:10:9)
   at BrowserError (D:\STS_workspace\jgh\node_modules\protractor\built\exitCodes.js:51:9)
   at Local.addDefaultBinaryLocs_ (D:\STS_workspace\jgh\node_modules\protractor\built\driverProviders\local.js:40:23)
   at Local.setupDriverEnv (D:\STS_workspace\jgh\node_modules\protractor\built\driverProviders\local.js:81:14)
   at Local.setupEnv  (D:\STS_workspace\jgh\node_modules\protractor\built\driverProviders\driverProvider.js:110:34)
   at q.then (D:\STS_workspace\jgh\node_modules\protractor\built\runner.js:334:41)
   at _fulfilled (D:\STS_workspace\jgh\node_modules\q\q.js:834:54)
   at self.promiseDispatch.done    (D:\STS_workspace\jgh\node_modules\q\q.js:863:30)
   at Promise.promise.promiseDispatch     (D:\STS_workspace\jgh\node_modules\q\q.js:796:13)
[21:19:23] E/launcher - Process exited with error code 135
Run Code Online (Sandbox Code Playgroud)

我的conf.js看起来像:

var SpecReporter = require('jasmine-spec-reporter').SpecReporter;

exports.config = {
  //    directConnect:true,
  specs: ['spec4.js'],
 framework: 'jasmine2' ,

 onPrepare: function () {
  jasmine.getEnv().addReporter(new SpecReporter({
  spec: {
    displayStacktrace: true,
    displaySuccessesSummary: true,
    displayFailuresSummary: true,  
    displayPendingSummary: true,
    displaySpecDuration: true,     
      },

    }));
  },

  jasmineNodeOpts: {
    defaultTimeoutInterval: 25000,
    print: function () {},
},
Run Code Online (Sandbox Code Playgroud)

我在路径node_modules/protractor/node_modules/webdriver-manager中没有selenium文件夹,但我有package.json,其中我添加了"webdriver-update":"webdriver-manager update".这是npm run webdriver-update的输出:

    D:\STS_workspace\jgh>npm run webdriver-update
    npm WARN invalid config proxy="http:"  
    npm WARN invalid config Must be a full url with 'http://'
    npm WARN invalid config proxy="http:"
    npm WARN invalid config Must be a full url with 'http://'
    npm ERR! Windows_NT 10.0.14393
    npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program     Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "webdriver-update"
    npm ERR! node v6.10.0
    npm ERR! npm  v3.10.10
    npm ERR! path D:\STS_workspace\jgh\package.json
    npm ERR! code ENOENT
    npm ERR! errno -4058
    npm ERR! syscall open
    npm ERR! enoent ENOENT: no such file or directory, open 'D:\STS_workspace\jgh\package.json'
    npm ERR! enoent ENOENT: no such file or directory, open 'D:\STS_workspace\jgh\package.json'
    npm ERR! enoent This is most likely not a problem with npm itself
    npm ERR! enoent and is related to npm not being able to find a file.
    npm ERR! enoent

npm ERR! Please include the following file with any support request:
npm ERR!     D:\STS_workspace\jgh\npm-debug.log
Run Code Online (Sandbox Code Playgroud)

cni*_*ina 46

看起来您正在使用directConnect或启动配置文件中的local驱动程序提供程序(没有seleniumAddressdirectConnect).你需要跑webdriver-manager update.

以前我有额外的标志,不能单独或gecko下载webdriver-manager update --standalone false --gecko false.如果您是通过本地驱动程序提供程序启动,则不再是这种情况.您将需要selenium独立jar文件.

您可以使用package.json中的脚本运行它.就像是:

"scripts": {
  "webdriver-update": "webdriver-manager update"
}
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作:npm run webdriver-update.你如何检查二进制文件是否存在?在您的项目中,导航到node_modules/protractor/node_modules/webdriver-manager/selenium/.这是update-config.json您下载的二进制文件所在的位置.

  • 上面的答案对我有用,即使我处于不同但相似的情况.即使在多次运行"webdriver-manager update"之后,调用"npm test"也会失败并出现相同的错误.但是直接从命令行调用"protractor config.js"成功了.原因与此处描述的根本原因相同:npm必须运行"webdriver-manager update"才能在本地项目的node_modules文件夹中本地获取selenium文件.直接运行"webdriver-manager update"时,它仅在全局安装了selenium文件. (2认同)
  • 是的,调用npm test要求Protractor是package.json中的节点依赖项。如果Protractor是全局安装的,而不是package.json的一部分,则此方法将不起作用,因为Protractor不属于本地node_modules文件夹 (2认同)

小智 40

您可以尝试像这样更新它,它肯定会在node_modules/protractor中更新它:

$ ./node_modules/protractor/bin/webdriver-manager update
Run Code Online (Sandbox Code Playgroud)

  • 这是在OSX上的Protractor框架中对我有用的唯一解决方案。 (2认同)

Yil*_*ric 9

只需在项目文件夹中使用npx命令执行webdriver-manager即可

npx webdriver-manager update
Run Code Online (Sandbox Code Playgroud)

  • 谢谢@Yildiray-Meric 是唯一有效的解决方案! (2认同)