web-dev-qa-db-fra.com

exception de session non créée pour chrome dans Protractor

Je reçois une erreur ci-dessous lorsque j'essaie d'exécuter le test de Protractor sur Chrome.

Mes conf.ts

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

Erreur:

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

        }],

La plupart des discussions sur le Web portent sur la version. J'utilise actuellement des versions à jour

Un indice s'il vous plaît?

À votre santé

10
SMPH

Vous pouvez changer la version de chromedriver téléchargée par webdriver-manager en modifiant le fichier config.json de Protractor ...

  1. Editez le fichier de configuration de Protractor: node_modules/protractor/config.json
  2. Changez la version du pilote chrome en fonction de vos besoins. par exemple. "chromedriver": "2.24".
  3. Exécutez la mise à jour de webdriver-manager.

d'après l'erreur que vous avez signalée, le rapporteur n'utilise pas la dernière version du pilote chrome. Dans la trace de pile, il affiche la version du pilote chrome sous la forme 2.21.

13
Sudharsan Selvaraj

Je n'ai pas encore assez de rep pour laisser un commentaire sous la réponse de Sudharsan mais l'emplacement du fichier de configuration qu'il vous dit de modifier est en fait à 

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

Ce n'est pas le rapporteur tsconfig mais le webdriver-manager config.json que vous souhaitez modifier. 

Cela dit, j’ai déjà rencontré ce problème et j’ai adopté une approche différente pour le résoudre. La solution fournie par Sudharsan fonctionnerait si vous n'aviez besoin que de l'installer une fois. Nos builds fonctionnent dans TFS, ce qui nettoie le répertoire de travail des agents de build et extrait un nouveau référentiel sur chaque build. Changer la configuration de WebDriver ne fonctionnerait pas dans cette situation car nous npm install toutes les choses avant chaque construction. Dans ce cas, il reviendrait toujours à l'ancienne version de chromedriver. 

Ce que j'ai fait à la place a été ajouté chromedriver à ma devDependencies dans le package.json, puis je supprime la version de chromedriver installée par webdriver-manager et déplace la version mise à jour de chromedriver à l'emplacement approprié à l'aide d'une tâche rapide. Donc, dans le package.json, j'ai cette liste sous devDependencies:

"chromedriver": "~2.24.1"

et puis j'ai une tâche gulp qui supprime et déplace les fichiers comme ceci:

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

Et comme le rapporteur continuera à rechercher l'ancienne version de chromedriver qui avait été installée lors de l'exécution de webdriver-manager update, vous devez lui indiquer où chercher le fichier chromedriver.exe, ajoutez-le à votre confr.js et il devrait commencer à fonctionner. 

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

C’est un peu ridicule de devoir faire face à tous ces problèmes pour que cela fonctionne, mais chromedriver 2.22 ne semble pas fonctionner avec Chrome 53+. Du moins pas dans mon expérience. 

TL; DR 

Si vous ne devez l'installer qu'une fois, utilisez la solution Sudharsan (si vous modifiez la configuration correcte), c'est plus simple. Si vous êtes dans ma situation et que vous devrez installer un rapporteur, essayez continuellement ma solution. Cela a bien fonctionné pour moi et je n'ai pas rencontré cette erreur depuis.

7
tehbeardedone

J'avais juste besoin de:

npm update -g protractor
webdriver-manager update

Et cela a encore fonctionné.

3
Marc Stober

Protractor a une nouvelle version (4.0.10) qui utilisera la nouvelle version de webdriver-manager (10.2.6), qui sera mise à jour vers le nouveau Chromedriver lors de l’appel de webdriver-manager. Tout ce que vous avez à faire est de mettre à jour Protractor dans votre fichier package.json. 

"protractor": "^4.0.9" to "protractor": "^4.0.10"

J'espère que cela t'aides :)

1
Sevfuria

Pour moi, la mise à jour de chromedriver et de protractor-conf.js a résolu le problème.

  1. Téléchargez la dernière version de chromedriver qui convient à votre système d'exploitation (modifiez la version mineure si nécessaire) à partir d'ici: http://chromedriver.storage.googleapis.com/index.html?path=2.24/
  2. Décompressez dans le dossier /usr/local/bin/chromedriver.
  3. Dans protractor-conf.js (devrait être dans la racine de l'application), ajoutez une ligne avec config.chromeDriver = '/usr/local/bin/chromedriver';
0
Stas