selenium webdriver - excepție de sesiune necreată pentru Chrome în Protractor


Primej eroarea de mai jos când încerc să rulez testul Protractor pe Chrome.

Conf.ts-ul meu

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',

Eroare :

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']
            },

        }],

Majoritatea discuțiilor de pe internet sunt în jurul versiunii. În prezent folosesc versiuni actualizate

Ai vreo idee, te rog?

Noroc

Răspuns #1

Poți schimba versiunea de chromedriver descărcată de webdriver-manager modificând fișierul config.json al Protractor...

  1. Editează fișierul de configurare al Protractor: node_modules/protractor/config.json
  2. Schimbați versiunea driverului Chrome la cea de care aveți nevoie. de ex. „chromedriver”: „2.24”.
  3. Rulați webdriver-manager update.

Din eroarea pe care ai postat-o, Protractor nu folosește cea mai recentă versiune a driverului Chrome. În urma stivei de apeluri, afișează versiunea driverului Chrome ca 2.21.

Răspunsul #2

Nu am suficientă reputație încă pentru a lăsa un comentariu sub răspunsul lui Sudharsan, dar locația fișierului de configurare pe care îți spune să o modifici este de fapt la

node_modules/protractor/node_modules/webdriver-manager/config.json

Nu este tsconfig-ul protractor, ci config.json al webdriver-manager pe care doriți să-l modificați.

Spunând asta, m-am lovit de această problemă înainte și am adoptat o abordare diferită pentru a o rezolva. Soluția oferită de Sudharsan ar funcționa dacă ai nevoie să o instalezi doar o singură dată. Noi avem build-urile care rulează în TFS, care curăță directorul de lucru al agenților de build și trage un repository proaspăt la fiecare build. Schimbarea configurației webdriver nu ar funcționa în această situație deoarece facem npm install pentru toate înainte de fiecare build. În acest caz, s-ar reveni întotdeauna la versiunea mai veche a chromedriver.

Ceea ce am făcut în schimb a fost să adaug chromedriver în devDependencies în package.json și apoi am șters versiunea de chromedriver pe care o instalează webdriver-manager și am mutat versiunea actualizată de chromedriver în locația corectă cu o sarcină gulp. Așadar, în package.json am asta listat sub devDependencies:

"chromedriver": "~2.24.1"

și apoi am o sarcină gulp care șterge și mută fișierele astfel:

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']);

Și pentru că Protractor va căuta în continuare versiunea mai veche de chromedriver care a fost instalată atunci când ai rulat webdriver-manager update, trebuie să-i spui unde să caute chromedriver.exe, așadar adaugă acest lucru în conf.js al Protractor și ar trebui să înceapă să funcționeze.

chromeDriver: "../node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver.exe",

Este cam ridicol că trebuie să trecem prin toate aceste probleme pentru a funcționa, dar chromedriver 2.22 nu pare să funcționeze cu Chrome 53+. Cel puțin nu din experiența mea.

Rezumat

Dacă trebuie să îl instalezi doar o dată, folosește soluția lui Sudharsan (dacă modifici configurația corectă), este mai ușor. Dacă ești în situația mea și va trebui să instalezi protractor continuu, încearcă soluția mea. A funcționat bine pentru mine și nu m-am mai întâlnit cu această eroare de atunci.