尝试针对chrome运行Protractor测试时出现以下错误。
我的承诺
import {Config} from 'protractor'
export let config: Config = {
framework: 'jasmine',
// capabilities: { browserName: 'chrome'},
multiCapabilities: [
// {browserName: 'firefox'},
{
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
},
}],
seleniumAddress: 'http://127.0.0.1:4444/wd/hub',
seleniumPort: null,
seleniumArgs: [],
specs: [
'./Protractor/Login/*.spec.js',
错误:
Protractor conf.js
[17:19:07] I/hosted - Using the selenium server at http://127.0.0.1:4444/wd/hub
[17:19:07] I/launcher - Running 1 instances of WebDriver
[17:19:09] E/launcher - session not created exception
from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"8800.1","isDefault":true},"id":1,"name":"","origin":"://"}
(Session info: chrome=54.0.2840.59)
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.07 seconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'MAL000009416062', ip: '192.168.1.4', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_73'
Driver info: org.openqa.selenium.chrome.ChromeDriver
[17:19:09] E/launcher - SessionNotCreatedError: session not created exception
from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"8800.1","isDefault":true},"id":1,"name":"","origin":"://"}
(Session info: chrome=54.0.2840.59)
(Driver info: chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.3.9600 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 1.07 seconds
Build info: version: '2.53.1', revision: 'a36b8b1', time: '2016-06-30 17:37:03'
System info: host: 'MAL000009416062', ip: '192.168.1.4', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_73'
Driver info: org.openqa.selenium.chrome.ChromeDriver
at WebDriverError (C:\Users\392811\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:27:5)
at SessionNotCreatedError (C:\Users\392811\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\error.js:308:5)
conf.ts
multiCapabilities: [
{
browserName: 'chrome',
chromeOptions: {
args: ['--start-maximized']
},
}],
网上的大部分讨论都围绕着版本。我目前正在使用最新版本
有任何线索吗?
干杯
答案 0 :(得分:13)
您可以通过更改Protractor的config.json文件来更改webdriver-manager下载的chromedriver的版本......
从您发布的错误中,量角器未使用最新的chrome驱动程序版本。在堆栈跟踪中,它将Chrome驱动程序版本显示为2.21
。
答案 1 :(得分:7)
我还没有足够的代表在Sudharsan的回答下发表评论,但他告诉你修改的配置文件的位置实际上是
node_modules/protractor/node_modules/webdriver-manager/config.json
这不是量角器tsconfig,而是要修改的webdriver-manager config.json
。
话虽如此,我之前遇到过这个问题并采取了不同的方法来解决它。如果您只需要安装一次,Sudharsan提供的解决方案就可以使用。我们的构建在TFS中运行,它清理构建代理工作目录并在每个构建上提供一个新的repo。更改webdriver配置在这种情况下不起作用,因为我们npm install
在每次构建之前的所有事情。在这种情况下,它总是会恢复到较旧版本的chromedriver。
我所做的是将chromedriver添加到package.json
中的devDependencies中,然后删除了webdriver-manager安装的chromedriver版本,并将chromedriver的更新版本移到正确的位置并执行gulp任务。所以在package.json中我将它列在devDependencies下:
"chromedriver": "~2.24.1"
然后我有一个gulp任务删除并移动这样的文件:
var gulp = require('gulp');
var del = require('del');
var chromeDriverFilesToMove = [
'./node_modules/chromedriver/lib/chromedriver/**'
];
var chromeDriverFilesToDelete = [
'./node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver*.exe',
'./node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver*.zip'
];
gulp.task('delete-chromedriver', function() {
return del(chromeDriverFilesToDelete);
});
gulp.task('move-chromedriver', function() {
gulp.src(chromeDriverFilesToMove)
.pipe(gulp.dest('node_modules/protractor/node_modules/webdriver-manager/selenium/'));
});
gulp.task('chromedriver-update', ['delete-chromedriver', 'move-chromedriver']);
因为量角器仍在寻找在运行webdriver-manager update
时安装的旧版chromedriver,你必须告诉它在哪里寻找chromedriver.exe,所以将它添加到你的量角器conf.js和它应该开始工作。
chromeDriver: "../node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver.exe",
有点愚蠢,我们必须经历所有这些麻烦才能让它发挥作用,但是chromedriver 2.22似乎不适用于Chrome 53+。至少不符合我的经验。
TL; DR
如果你只需要安装一次使用Sudharsan的解决方案(给定你修改正确的配置),它就会更容易。如果你在我的情况下,将不得不连续安装量角器尝试我的解决方案。它对我来说效果很好,从那以后我就没有遇到过这个错误。
答案 2 :(得分:4)
我只需要:
npm update -g protractor
webdriver-manager update
它再次起作用。
答案 3 :(得分:1)
Protractor有一个新版本(4.0.10)将使用新版本的webdriver-manager(10.2.6),当发布webdriver-manager更新时,它将更新到新的Chromedriver。您需要做的就是更新package.json文件中的Protractor。
"protractor": "^4.0.9" to "protractor": "^4.0.10"
希望这会有所帮助:)
答案 4 :(得分:0)
对我来说,更新chromedriver并protractor-conf.js
解决了问题。
/usr/local/bin/chromedriver
文件夹。protractor-conf.js
(应该在app根目录中)添加一行config.chromeDriver = '/usr/local/bin/chromedriver';
答案 5 :(得分:0)
我希望这对您有用。