使用 Firefox 自动从 Nightwatch.js 错误 运行 Selenium
Error running Selenium automatically from Nightwatch.js with Firefox
我想在 运行 一个 nightwatch.js 测试用例时自动启动 Selenium 服务器。我将 nightwatch.js 上的硒设置更改为:
"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"
}
},
当我使用 Chrome 作为浏览器时,此配置有效。但是,当我使用 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 }
如果我手动 运行 Selenium 服务器,nightwatch 测试可以在 Firefox 上运行。我该如何解决?
nightwatch.js在文件中: for 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
}
},
硒含量-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@o.s.j.s.ServletContextHandler@5ed7a6{/,null,STARTING} has uncovered http methods for path: /
2018-02-16 14:24:00.978:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@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)
您看到的错误确实给了我们一些提示,说明出了什么问题,如下所示:
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 }
超文本传输协议 (HTTP) Response 500 服务器错误响应代码表示服务器遇到意外情况,无法满足请求。
主要原因是您使用的二进制文件 不兼容 为:
- Selenium Client 版本为 selenium391.jar 发布 '2018-02-07T22:42: 28.403Z'
- 但是 JDK 版本是 java.version: '1.8.0_112 哪个漂亮古老.
解决方案
一个快速的解决方案是:
- 将 JDK 版本更新到最近的水平,即 Java SE Development Kit 8u161
- 运行
CCleaner
工具,用于在执行 测试套件 之前和之后消除 OS 琐事
更新
正如您在评论中提到的,您仍然遇到同样的错误,您需要更改以下行:
"webdriver.firefox.profile" : "./selenium/geckodriver.exe"
收件人:
"webdriver.gecko.driver" : "./selenium/geckodriver.exe"
我想在 运行 一个 nightwatch.js 测试用例时自动启动 Selenium 服务器。我将 nightwatch.js 上的硒设置更改为:
"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"
}
},
当我使用 Chrome 作为浏览器时,此配置有效。但是,当我使用 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 }
如果我手动 运行 Selenium 服务器,nightwatch 测试可以在 Firefox 上运行。我该如何解决?
nightwatch.js在文件中: for 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
}
},
硒含量-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@o.s.j.s.ServletContextHandler@5ed7a6{/,null,STARTING} has uncovered http methods for path: /
2018-02-16 14:24:00.978:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@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)
您看到的错误确实给了我们一些提示,说明出了什么问题,如下所示:
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 }
超文本传输协议 (HTTP) Response 500 服务器错误响应代码表示服务器遇到意外情况,无法满足请求。
主要原因是您使用的二进制文件 不兼容 为:
- Selenium Client 版本为 selenium391.jar 发布 '2018-02-07T22:42: 28.403Z'
- 但是 JDK 版本是 java.version: '1.8.0_112 哪个漂亮古老.
解决方案
一个快速的解决方案是:
- 将 JDK 版本更新到最近的水平,即 Java SE Development Kit 8u161
- 运行
CCleaner
工具,用于在执行 测试套件 之前和之后消除 OS 琐事
更新
正如您在评论中提到的,您仍然遇到同样的错误,您需要更改以下行:
"webdriver.firefox.profile" : "./selenium/geckodriver.exe"
收件人:
"webdriver.gecko.driver" : "./selenium/geckodriver.exe"