Erreur lors de l’exécution de Selenium automatiquement à partir de Nightwatch.js avec Firefox

Je souhaite démarrer Selenium Server automatiquement lorsque je lance un scénario de test nightwatch.js. J’ai modifié les parameters de selenium sur nightwatch.json en:

"selenium" : { "start_process" : true, "server_path" : "./selenium/selenium391.jar", "log_path" : "C:/Projects/reports", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./selenium/chromedriver.exe", "webdriver.ie.driver" : "./selenium/IEDriverServer.exe", "webdriver.firefox.profile" : "./selenium/geckodriver.exe" } }, 

Cette configuration fonctionne lorsque j’utilise Chrome comme navigateur. Cependant, j’ai eu une erreur quand je l’ai lancé avec Firefox:

 ERROR Response 500 POST /wd/hub/session (312ms) { value: { message: 'Unable to create new service: GeckoDriverService\nBuild info: ver sion: \'3.9.1\', revision: \'63f7b50\', time: \'2018-02-07T22:42:28.403Z\'\nSyst em info: host: \'IBS-PC192\', ip: \'192.168.1.115\', os.name: \'Windows 7\', os. arch: \'x86\', os.version: \'6.1\', java.version: \'1.8.0_112\'\nDriver info: dr iver.version: unknown', error: 'session not created' }, status: 33 } 

Si j’exécute le serveur Selenium manuellement, le test nightwatch fonctionne sur Firefox. Comment résoudre ça?

Fichier nightwatch.json: pour Firefox

 { "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "page_objects_path" : "", "custom_assertions_path" : "", "globals_path" : "C:/Projects/global/globals.js", "live_output" : false, "parallel_process_delay" : 10, "disable_colors": false, "test_workers" : false, "selenium" : { "start_process" : true, "server_path" : "./selenium/selenium391.jar", "log_path" : "C:/Projects/reports", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./selenium/chromedriver.exe", "webdriver.ie.driver" : "./selenium/IEDriverServer.exe", "webdriver.firefox.profile" : "./selenium/geckodriver.exe" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_host" : "127.0.0.1", "selenium_port" : 4444, "silent" : true, "disable_colors": false, "screenshots" : { "enabled" : false, "path" : "" }, "desiredCapabilities" : { "browserName" : "firefox", "javascriptEnabled" : true, "acceptSslCerts" : true } }, 

Le contenu de selenium-debug.log

 14:24:00.791 INFO - Selenium build info: version: '3.9.1', revision: '63f7b50' 14:24:00.791 INFO - Launching a standalone Selenium Server on port 4444 2018-02-16 14:24:00.853:INFO::main: Logging initialized @280ms to org.seleniumhq.jetty9.util.log.StdErrLog 2018-02-16 14:24:00.962:INFO:osjs.Server:main: jetty-9.4.7.v20170914, build timestamp: 2017-11-21T22:27:37+01:00, git hash: 82b8fb23f757335bb3329d540ce37a2a2615f0a8 2018-02-16 14:24:00.978:WARN:osjs.SecurityHandler:main: ServletContext@osjsServletContextHandler@5ed7a6{/,null,STARTING} has uncovered http methods for path: / 2018-02-16 14:24:00.978:INFO:osjsh.ContextHandler:main: Started osjsServletContextHandler@5ed7a6{/,null,AVAILABLE} 2018-02-16 14:24:01.352:INFO:osjs.AbstractConnector:main: Started ServerConnector@18f65a4{HTTP/1.1,[http/1.1]}{0.0.0.0:4444} 2018-02-16 14:24:01.352:INFO:osjs.Server:main: Started @782ms 14:24:01.352 INFO - Selenium Server is up and running on port 4444 2018-02-16 14:24:01.540:INFO:osjshC.ROOT:qtp17048053-10: org.openqa.selenium.remote.server.WebDriverServlet-132ec19: Initialising WebDriverServlet 14:24:01.618 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.BeginSession@1e1a802 14:24:01.618 INFO - /session: Executing POST on /session (handler: BeginSession) 14:24:01.680 INFO - Capabilities are: Capabilities {acceptSslCerts: true, browserName: firefox, javascriptEnabled: true, name: Google Wiki} 14:24:01.680 INFO - Capabilities {acceptSslCerts: true, browserName: firefox, javascriptEnabled: true, name: Google Wiki} matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.firefox.GeckoDriverService) 

L’erreur que vous constatez nous donne un indice sur ce qui ne va pas comme suit:

 ERROR Response 500 POST /wd/hub/session (312ms) { value: { message: 'Unable to create new service: GeckoDriverService\nBuild info: version: \'3.9.1\', revision: \'63f7b50\', time: \'2018-02-07T22:42:28.403Z\'\nSystem info: host: \'IBS-PC192\', ip: \'192.168.1.115\', os.name: \'Windows 7\', os.arch: \'x86\', os.version: \'6.1\', java.version: \'1.8.0_112\'\nDriver info: driver.version: unknown', error: 'session not created' }, status: 33 } 

Le code de réponse d’erreur du serveur HTTP 500 (HyperText Transfer Protocol) indique que le serveur a rencontré une condition inattendue qui l’a empêché de répondre à la demande.

La raison principale est que les fichiers binarys que vous utilisez sont incompatibles en tant que:

  • La version de Selenium Client est identique à celle de selenium391.jar, publiée le ‘2018-02-07T22: 42: 28.403Z’
  • Mais la version de JDK est la suivante: java.version: ‘1.8.0_112, qui est très ancienne .

Solution

Une solution rapide consisterait à:

  • Mettez à jour la version du JDK aux niveaux récents, par exemple le kit de développement Java SE 8u161
  • Exécutez l’outil CCleaner pour effacer les tâches du système d’exploitation avant et après l’exécution de votre suite de tests

Mettre à jour

Comme vous l’avez mentionné dans votre commentaire, vous avez toujours la même erreur, vous devez modifier la ligne suivante:

 "webdriver.firefox.profile" : "./selenium/geckodriver.exe" 

À :

 "webdriver.gecko.driver" : "./selenium/geckodriver.exe"