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é
Vous pouvez changer la version de chromedriver téléchargée par webdriver-manager en modifiant le fichier config.json de Protractor ...
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
.
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.
J'avais juste besoin de:
npm update -g protractor
webdriver-manager update
Et cela a encore fonctionné.
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 :)
Pour moi, la mise à jour de chromedriver et de protractor-conf.js
a résolu le problème.
/usr/local/bin/chromedriver
.protractor-conf.js
(devrait être dans la racine de l'application), ajoutez une ligne avec config.chromeDriver = '/usr/local/bin/chromedriver';