Google chrome chrome v54/web驱动程序v2.25导致吞咽量角器错误
由于chrome(v54)的最新更新,我们注意到量角器测试失败。我们试图更新到最新版本的gulp Digrator(v3.0.0),该版本将下载最新的web驱动程序(v2.25)以解决此问题,但不幸的是,出现了一个新错误,我们无法解决 在chrome更新之前,一切正常 我们的量角器配置如下:Google chrome chrome v54/web驱动程序v2.25导致吞咽量角器错误,google-chrome,gulp,protractor,chrome-web-driver,gulp-protractor,Google Chrome,Gulp,Protractor,Chrome Web Driver,Gulp Protractor,由于chrome(v54)的最新更新,我们注意到量角器测试失败。我们试图更新到最新版本的gulp Digrator(v3.0.0),该版本将下载最新的web驱动程序(v2.25)以解决此问题,但不幸的是,出现了一个新错误,我们无法解决 在chrome更新之前,一切正常 我们的量角器配置如下: exports.config = { // Capabilities to be passed to the webdriver instance. capabilities: { 'bro
exports.config = {
// Capabilities to be passed to the webdriver instance.
capabilities: {
'browserName': 'chrome'
},
onPrepare: function () {
var fs = require('fs');
var testDir = 'testresults/';
if (!fs.existsSync(testDir)) {
fs.mkdirSync(testDir);
}
var jasmineReporters = require('jasmine-reporters');
// returning the promise makes protractor wait for the reporter config before executing tests
return browser.getProcessedConfig().then(function () {
// you could use other properties here if you want, such as platform and version
var browserName = 'browser';
browser.getCapabilities().then(function (caps) {
browserName = caps.caps_.browserName.replace(/ /g, "_");
var junitReporter = new jasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: testDir,
// this will produce distinct xml files for each capability
filePrefix: 'test-protractor-' + browserName,
modifySuiteName: function (generatedSuiteName) {
// this will produce distinct suite names for each capability,
// e.g. 'firefox.login tests' and 'chrome.login tests'
return 'test-protractor-' + browserName + '.' + generatedSuiteName;
}
});
jasmine.getEnv().addReporter(junitReporter);
});
});
},
baseUrl: 'http://localhost:3000',
// Spec patterns are relative to the current working directory when
// protractor is called.
specs: [paths.e2e + '/**/*.js'],
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000
}
};
错误是:
[13:27:13] E/launcher - Error: Error
at C:\ws\node_modules\protractor\built\util.js:55:37
at _rejected (C:\ws\node_modules\q\q.js:844:24)
at C:\ws\node_modules\q\q.js:870:30
at Promise.when (C:\ws\node_modules\q\q.js:1122:31)
at Promise.promise.promiseDispatch (C:\ws\node_modules\q\q.js:788:41)
at C:\ws\node_modules\q\q.js:604:44
at runSingle (C:\ws\node_modules\q\q.js:137:13)
at flush (C:\ws\node_modules\q\q.js:125:13)
at nextTickCallbackWith0Args (node.js:420:9)
at process._tickCallback (node.js:349:13)
[13:27:13] E/launcher - Process exited with error code 100
onPrepare
正在runFilenameOrFn\uu
函数的build/util.js中进行评估。不幸的是,stacktrace没有帮助,但这意味着onPrepare
有错误。查看您的onPrepare
方法,从浏览器功能分配browserName时会出现错误。在您的代码中,caps.caps
实际上是未定义的。由于未定义caps.caps\u
,因此caps.caps\u.browserName
引发错误。应通过以下方式访问capabilities对象:
browser.getCapabilities().then(capabilities => {
let browserName = capabilities.browserName.replace(/ /g, "_");
onPrepare
正在runFilenameOrFn\uu
函数的build/util.js中进行评估。不幸的是,stacktrace没有帮助,但这意味着onPrepare
有错误。查看您的onPrepare
方法,从浏览器功能分配browserName时会出现错误。在您的代码中,caps.caps
实际上是未定义的。由于未定义caps.caps\u
,因此caps.caps\u.browserName
引发错误。应通过以下方式访问capabilities对象:
browser.getCapabilities().then(capabilities => {
let browserName = capabilities.browserName.replace(/ /g, "_");
虽然你的代码没有立即解决我的问题,但它显然引起了人们对这个问题的关注——很明显,在最近的一次chrome webdriver更新中,访问私有财产“caps_3;”变得不可能了。可能无论如何都不应该使用它,所以解决方案是:
browserName=capabilities.get('browserName').replace(//g,“”)
也是与该问题相关的其他人的链接。非常感谢你的帮助!我从未想到onPrepare函数会导致如此模糊的错误。没问题<代码>运行文件名或fn错误消息没有帮助。这最终会得到改进。虽然你的代码没有立即解决我的问题,但它显然引起了人们对这个问题的关注——显然在最近的一次chrome webdriver更新中,访问私有财产“caps_2;”变得不可能了。可能无论如何都不应该使用它,所以解决方案是:browserName=capabilities.get('browserName').replace(//g,“”)
也是与该问题相关的其他人的链接。非常感谢你的帮助!我从未想到onPrepare函数会导致如此模糊的错误。没问题<代码>运行文件名或fn错误消息没有帮助。这最终将得到改进。