会话未在Protractor中为chrome创建例外

时间:2016-10-18 06:24:40

标签: selenium-webdriver typescript protractor selenium-chromedriver

尝试针对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']
            },

        }],

网上的大部分讨论都围绕着版本。我目前正在使用最新版本

有任何线索吗?

干杯

6 个答案:

答案 0 :(得分:13)

您可以通过更改Protractor的config.json文件来更改webdriver-manager下载的chromedriver的版本......

  1. 编辑量角器的配置文件:node_modules / protractor / config.json
  2. 将Chrome驱动程序版本更改为您需要的任何版本。例如。 " chromedriver":" 2.24"。
  3. 运行webdriver-manager更新。
  4. 从您发布的错误中,量角器未使用最新的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解决了问题。

  1. 从此处下载适合您的操作系统的最新chromedriver(如果需要,请更改次要版本):http://chromedriver.storage.googleapis.com/index.html?path=2.24/
  2. 解压缩到/usr/local/bin/chromedriver文件夹。
  3. protractor-conf.js(应该在app根目录中)添加一行config.chromeDriver = '/usr/local/bin/chromedriver';

答案 5 :(得分:0)

  1. 只需运行以下命令:
  2. 项目目录:/> webdriver-manager update --versions.chrome = ChromeVersion
  3. 将其替换为“ ChromeVersion” Google Chrome浏览器版本。从导航到“帮助>>关于Google chrome >>中查找chrome版本,例如:版本 76.0.3809.100 (正式版本) (64位)”。

我希望这对您有用。