9
votes

Comment rétrograder Chrome WebDriver dans le rapporteur angulaire

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 } }));
  }
};


1 commentaires

utilisez ng e2e --webdriverUpdate=false pour désactiver ng e2e mise à jour du pilote ng e2e e2e. Avec cela, vous pouvez utiliser webdriver-manager update --version.chrome=xxxx pour obtenir la version souhaitée avant d'exécuter ng e2e ......


5 Réponses :


1
votes

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


4 commentaires

@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.



7
votes

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
  • assurez-vous que la version spécifiée correspond dans 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.



1 commentaires

Merci beaucoup! C'est ce qui a finalement fonctionné pour moi. =)



4
votes

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

documentation du gestionnaire de webdriver

documentation ngn e2e


0 commentaires

1
votes

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:

  1. Dans votre fichier package.json , ajoutez "postinstall": "node_modules / .bin / webdriver-manager update --versions.chrome = 81.0.4044.122".

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.

  1. lancez maintenant npm install qui installera une version de chromedriver spécifiée.
  2. maintenant si vous voulez que ng e2e ne mette pas à jour votre version de chromedriver, exécutez-le avec l'argument --webdriver-update = false

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


0 commentaires

0
votes

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.


0 commentaires