3
votes

Mes tests nightwatch.js ne fonctionnent pas dans Chrome sans tête de CentOS

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?


2 commentaires

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.


3 Réponses :


5
votes

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:


1 commentaires

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!



1
votes

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


0 commentaires

0
votes

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


0 commentaires