J'essaie d'exécuter ng e2e
sur Angular 7 avec chrome comme navigateur. J'ai exécuté les commandes npm install -g protractor
et webdriver-manager update
. Il finit par télécharger et exécuter chromedriver = 76.0.3809.12 mais il ne m'est pas possible de mettre à jour Chrome lui-même sur ma machine. Je suis sur chrome 74.
J'ai essayé la webdriver-manger update
webdriver-manager update --versions.chrome 2.46
et la webdriver-manager update --versions.chrome 74.0.3729.6
mais même si je supprime les fichiers chrome 76 de node_modules\protractor\node_modules\webdriver-manager\selenium\
mais ils réinstallent toujours à chaque fois que je lance ng e2e
protractor.conf.js
"private": true, "dependencies": { "@angular/animations": "^7.2.14", "@angular/cdk": "^7.3.7", "@angular/common": "^7.2.14", "@angular/compiler": "^7.2.14", "@angular/core": "^7.2.14", "@angular/forms": "^7.2.14", "@angular/http": "^7.2.14", "@angular/material": "^7.3.7", "@angular/platform-browser": "^7.2.14", "@angular/platform-browser-dynamic": "^7.2.14", "@angular/platform-server": "^7.2.14", "@angular/router": "^7.2.14", "core-js": "^2.5.7", "rxjs": "^6.5.2", "rxjs-compat": "^6.5.1", "zone.js": "^0.8.29" }, "devDependencies": { "@angular-devkit/build-angular": "^0.13.8", "@angular/cli": "^7.3.8", "@angular/compiler-cli": "^7.2.14", "@angular/language-service": "^7.2.14", "@types/jasmine": "^3.3.12", "@types/jasminewd2": "~2.0.3", "@types/node": "^11.13.8", "codelyzer": "^5.0.1", "jasmine-core": "^3.4.0", "jasmine-spec-reporter": "^4.2.1", "karma": "^4.1.0", "karma-chrome-launcher": "^2.2.0", "karma-cli": "^2.0.0", "karma-coverage-istanbul-reporter": "~2.0.0", "karma-jasmine": "^2.0.1", "karma-jasmine-html-reporter": "^1.4.2", "protractor": "^5.4.2", "rxjs-tslint": "^0.1.7", "ts-node": "~5.0.1", "tslint": "^5.16.0", "typescript": "<3.3.0", "webpack": "^4.30.0" }
tsconfig.e2e.json
i ï½¢wdmï½£: Compiled successfully. [07:00:51] I/update - chromedriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_76.0.3809.12.zip [07:00:51] I/update - chromedriver: unzipping chromedriver_76.0.3809.12.zip [07:00:52] I/update - chromedriver: chromedriver_76.0.3809.12.exe up to date [07:00:54] I/launcher - Running 1 instances of WebDriver [07:00:54] I/direct - Using ChromeDriver directly... [9224:10012:0612/070058.684:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors [9224:10012:0612/070058.869:ERROR:configuration_policy_handler_list.cc(90)] Unknown policy: EnableCommonNameFallbackForLocalAnchors DevTools listening on ws://127.0.0.1:5007/devtools/browser/376b234b-f47d-4841-afdc-77719714db23 [07:01:05] E/launcher - session not created: This version of ChromeDriver only supports Chrome version 76 (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64) [07:01:05] E/launcher - SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 76 (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64)
lorsque j'essaye d'exécuter ng e2e
, cette erreur est ng e2e
:
versions.standalone=3.8.0 [06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\standalone-response.xml https://selenium-release.storage.googleapis.com/ [06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chrome-response.xml https://chromedriver.storage.googleapis.com/ [06:59:13] I/config_source - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium\gecko-response.json https://api.github.com/repos/mozilla/geckodriver/releases [06:59:14] I/downloader - curl -oM:.\node_modules\protractor\node_modules\webdriver-manager\selenium/selenium-server-standalone-3.8.0.jar https://selenium-release.storage.googleapis.com/3.8/selenium-server-standalone-3.8.0.jar [06:59:14] I/update - chromedriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_76.0.3809.12.zip [06:59:14] I/update - chromedriver: unzipping chromedriver_76.0.3809.12.zip [06:59:14] I/update - chromedriver: chromedriver_76.0.3809.12.exe up to date [06:59:14] I/update - geckodriver: file exists M:.\node_modules\protractor\node_modules\webdriver-manager\selenium\geckodriver-v0.24.0.zip [06:59:14] I/update - geckodriver: unzipping geckodriver-v0.24.0.zip [06:59:15] I/update - geckodriver: geckodriver-v0.24.0.exe up to date
MISE À JOUR: quand j'ai exécuté webdriver-manager clean
et node node_modules/protractor/bin/webdriver-manager update --standalone --versions.standalone=3.8.0
il a toujours téléchargé chrome 76 voici la sortie de la deuxième commande et ng e2e après le propre
node node_modules / protractor / bin / webdriver-manager update --standalone -
E/launcher - session not created: This version of ChromeDriver only supports Chrome version 76 (Driver info: chromedriver=76.0.3809.12 (220b19a666554bdcac56dff9ffd44c300842c933-refs/branch-heads/3809@{#83}),platform=Windows NT 10.0.16299 x86_64) E/launcher - Process exited with error code 199 An unexpected error occurred: undefined
ng e2e
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "module": "commonjs", "target": "es5", "types": [ "jasmine", "jasminewd2", "node" ] } }
package.json
exports.config = { allScriptsTimeout: 11000, specs: [ './src/**/*.e2e-spec.ts' ], capabilities: { 'browserName': 'chrome' }, directConnect: true, baseUrl: 'http://localhost:4200/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, print: function() {} }, onPrepare() { require('ts-node').register({ project: require('path').join(__dirname, './tsconfig.e2e.json') }); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); } };
5 Réponses :
Essayez l'option ci-dessous
webdriver-manager clean // This will clean the existing webdrivers node node_modules/protractor/bin/webdriver-manager update --standalone --versions.standalone=3.8.0
@Mhyland Partagez votre package.json
. Essayez de supprimer votre dossier node_modules
et effectuez une nouvelle npm install
J'ai supprimé mes node_modules
et nettoyé le cache, puis exécuté npm install
. Il a ramené le package installé Chrome à Chrome 75 mais j'en ai besoin à Chrome 74
Le test fonctionne-t-il avec succès?
Verrouiller le rapporteur sur une version spécifique. Je suis sur 5.4.2 et quand webdriver-manager update
il télécharge chromedriver_2.46.exe
. J'ai essayé de mettre à jour vers protractor@latest
il y a quelques jours à peine et j'ai rencontré des problèmes majeurs pour que mes tests s'exécutent sur Chrome 75.
Pour qui se heurte à cela et souhaite utiliser Chrome 77, voici les étapes:
npm i protractor@^5.4.2
node node_modules/.bin/webdriver-manager update --versions.chrome=77.0.3865.75
protractor.conf.js
sous la clé chromeDriver
.Voici ma configuration de rapporteur:
"postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=77.0.3865.75"
J'ai également ajouté le script suivant dans package.json
:
exports.config = { allScriptsTimeout: 11000, specs: ['./src/**/*.e2e-spec.ts'], capabilities: { browserName: 'chrome', }, chromeDriver: '../node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_77.0.3865.75', directConnect: true, baseUrl: 'http://localhost:4200/', framework: 'jasmine', jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: 30000, print: function() {}, }, onPrepare() { require('ts-node').register({ project: require('path').join(__dirname, './tsconfig.json'), }); jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); }, };
pour vous assurer d'avoir la bonne version après chaque installation.
Merci beaucoup! C'est ce qui a finalement fonctionné pour moi. =)
Si vous utilisez Angular et devez exécuter des tests de bout en bout, vous avez peut-être besoin d'une approche différente.
Configuration de la version de ChromeDriver
cd <project>/node_modules/.bin/
node webdriver-manager update --versions.chrome 80.0.3987.106 --gecko false --standalone false
Définir --gecko
et --standalone
sur false
les empêchera de se télécharger et téléchargera simplement chromedriver.
Exécution de tests e2e
npx ng e2e --webdriverUpdate=false //in project folder
--webdriverUpdate=false
N'essayez pas de mettre à jour le pilote Web
Références
Je suis également confronté au même genre de problème. J'utilisais la version 81.0.4044.122 du pilote chrome, mais chaque fois que j'exécutais la commande ng e2e, elle mettait à jour le pilote chrome vers 83.0.4103.39 et j'ai recherché de nombreuses choses qui implémentent également différentes choses pour résoudre ce problème et les étapes suivantes ont finalement fonctionné pour moi.
Pas:
voici l'exemple de package.json: `
{ "name": "your-project-name", "version": "1.30.0", "scripts": { "ng": "ng", "start": "ng serve", "postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=81.0.4044.122 && ng build", "build-development": "ng build --configuration=development", "build-staging": "ng build --configuration=staging", "build-production": "ng build --configuration=production", "test": "ng test", "lint": "ng lint", } }
Remarque : dans la post-installation, vous pouvez spécifier plusieurs commandes à l'aide de "&&"
par exemple après l' postinstall": "node_modules/.bin/webdriver-manager update --versions.chrome=81.0.4044.122 && ng build"
J'utilise la version chrome 81.0.4044.122 mais vous pouvez spécifier n'importe quelle version.
npm install
qui installera une version de chromedriver spécifiée. par exemple ng e2e --webdriver-update=false
vous pouvez également spécifier un environnement et une suite de tests spécifiques avec ng e2e:
par exemple ng e2e --webdriver-update=false --configuration=staging --suite=login
Allez dans "node_modules \ protractor \ node_modules \ webdriver-manager \ selenium" et supprimez tous les fichiers du pilote chrome et les fichiers sélénium.
Exécutez la commande "webdrvier-manager update" sur cmd.
utilisez
ng e2e --webdriverUpdate=false
pour désactiverng e2e
mise à jour du piloteng e2e
e2e. Avec cela, vous pouvez utiliserwebdriver-manager update --version.chrome=xxxx
pour obtenir la version souhaitée avant d'exécuterng e2e ......