Je lance des tests nightwatch.js en utilisant Nightwatch version 1.0.18 et cela fonctionne dans un environnement Windows, mais quand je l'exécute dans centOS après l'installation de Xvfb, j'ai trouvé l'erreur ci-dessous.
{ "src_folders": [ "./tests" ], "output_folder": "./reports", "custom_commands_path": "./custom_commands", "custom_assertions_path": "", "test_workers": false, "webdriver": { "start_process": true }, "test_settings": { "default": { "webdriver": { "port": 9515, "server_path": "./node_modules/chromedriver/lib/chromedriver/chromedriver", "cli_args": [ "--log", "debug" ] }, "skip_testcases_on_fail": true, "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true, "chromeOptions": { "args": [ "headless", "no-sandbox", "disable-gpu" ] } } } } }
Voici mon code de fichier nightwatch.json:
Error while running .navigateTo() protocol action: invalid session id Error while running .locateMultipleElements() protocol action: invalid session id Error while running .locateMultipleElements() protocol action: invalid session id
Est-ce qu'il me manque quelque chose pour exécuter mes tests dans l'environnement centOS car il s'exécute dans l'environnement Windows?
3 Réponses :
J'ai eu le même problème avec Nightwatchjs et la configuration de npm chomedriver.
Contexte: Tout fonctionnait jusqu'à ce que je viens de mettre à jour Chromium sur mon système. Outre les erreurs dans le message d'origine, la journalisation détaillée a également montré:
{ message: 'unknown error: Chrome failed to start: exited abnormally', error: [ "(unknown error: DevToolsActivePort file doesn't exist)", '(The process started from chrome location /usr/bin/chromium is no longer running, so ChromeDriver is assuming that Chrome has crashed.)', '(Driver info: chromedriver=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926),platform=Linux 4.9.0-8-amd64 x86_64)' ], }
Après en téléchargeant le pilote chromé autonome (2.46.628388) pour correspondre à ma version Chromium (72.0.3626.69), il affichait toujours les mêmes erreurs.
Solution: J'ai fini par télécharger une ancienne version de Chromium (71.0.3578.127) et paramétrer chromeOptions .binary vers le nouveau chemin du binaire chrome 71. J'ai également dû inclure 'no-sandbox' avec chromeOptions.args.
Voici l'extrait du site mentionné ci-dessus:
Téléchargement d'anciennes versions de Chrome / Chromium
Supposons que vous souhaitiez une version de Chrome 44 à des fins de débogage. Google ne propose pas d'anciennes versions car elles ne disposent pas de correctifs de sécurité à jour.
Cependant, vous pouvez obtenir une version de Chromium 44.x qui devrait principalement correspondre à la version stable. Voici comment vous le trouvez:
- Regardez dans https://googlechromereleases.blogspot.com/search/label/Stable% 20 mises à jour pour la dernière fois "44". a été mentionné.
- Faites une boucle sur l'historique de ces versions ("44.0.2403.157") dans la recherche de position
- Dans ce cas, il renvoie une position de base de "330231". C'est le commit de l'endroit où la version 44 a été ramifiée, en mai 2015. *
- Ouvrez l'archive des builds continus
- Cliquez sur votre plateforme (Linux / Mac / Win)
- Collez "330231" dans le champ de filtre en haut et attendez tous les résultats pour XHR.
- Finalement, j'obtiens un succès parfait: https: //commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Mac/330231/
- Parfois, vous devrez peut-être décrémenter le numéro de validation jusqu'à ce que vous en trouviez un.
- Téléchargez et exécutez!
J'ai fait la même chose, bien que je viens de télécharger google-chrome (v.73) et chromedriver 2.46. J'avais toujours le problème même s'ils étaient censés être compatibles. La solution était d'ajouter no-sandbox
dans les arguments chromeOptions!
La mise à niveau vers la dernière version de chromedriver a résolu le problème pour moi. Vous pouvez trouver la dernière version ici; https://www.npmjs.com/package/chromedriver
Dans ma situation, lorsque cette erreur se produit:
addons: chrome: stable
J'ai ajouté le code suivant dans .travis.yml
:
Error while running .navigateTo() protocol action: invalid session id
Même chose ici, configuration différente, mais mêmes erreurs, spécialement `Erreur lors de l'exécution de l'action de protocole .navigateTo (): id de session invalide`
J'ai eu plus de chance pour que
chromedriver
fonctionne de manière autonome au lieu du module de nœud, faites-moi savoir si vous voulez que je publie l'étape par étape.