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
chromedriverfonctionne de manière autonome au lieu du module de nœud, faites-moi savoir si vous voulez que je publie l'étape par étape.