Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Firefox从Nightwatch.js自动运行Selenium时出错_Node.js_Windows_Selenium_Nightwatch.js_Geckodriver - Fatal编程技术网

Node.js 使用Firefox从Nightwatch.js自动运行Selenium时出错

Node.js 使用Firefox从Nightwatch.js自动运行Selenium时出错,node.js,windows,selenium,nightwatch.js,geckodriver,Node.js,Windows,Selenium,Nightwatch.js,Geckodriver,我想在运行nightwatch.js测试用例时自动启动Selenium服务器。我将nightwatch.json上的selenium设置更改为: "selenium" : { "start_process" : true, "server_path" : "./selenium/selenium391.jar", "log_path" : "C:/Projects/reports", "host" : "127.0.0.1", "port" : 444

我想在运行nightwatch.js测试用例时自动启动Selenium服务器。我将nightwatch.json上的selenium设置更改为:

  "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.json文件:用于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
      }
    },
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@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)服务器错误响应代码表示服务器遇到意外情况,无法满足请求

主要原因是您使用的二进制文件不兼容,如下所示:

  • selenium391.jar的Selenium客户端版本发布于《2018-02-07T22:42:28.403Z》
  • 但是JDK的版本是java.version:'1.8.0_112,这是非常古老的
解决方案 一个快速的解决办法是:

  • 将JDK版本更新到最新级别,即
  • 在执行测试套件之前和之后,运行工具来消除操作系统的杂务

使现代化 正如您在评论中提到的,您仍然会遇到相同的错误,您需要更改以下行:

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


您看到的错误确实为我们提供了一些关于出错原因的提示,如下所示:

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)服务器错误响应代码表示服务器遇到意外情况,无法满足请求

主要原因是您使用的二进制文件不兼容,如下所示:

  • selenium391.jar的Selenium客户端版本发布于《2018-02-07T22:42:28.403Z》
  • 但是JDK的版本是java.version:'1.8.0_112,这是非常古老的
解决方案 一个快速的解决办法是:

  • 将JDK版本更新到最新级别,即
  • 在执行测试套件之前和之后,运行工具来消除操作系统的杂务

使现代化 正如您在评论中提到的,您仍然会遇到相同的错误,您需要更改以下行:

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


谢谢你的回答!不幸的是,尽管我已经更新了我的JDK并运行了CCleaner,但仍然出现了相同的错误。我目前对Chrome和IE没有问题。只要你在JDK上,次要版本就不重要了8@User2018在我的答案中添加了一个更新。让我知道状态。谢谢更新。恐怕我要到星期一才能公布结果,但我会尽快通知你的@科里·戈德伯格很高兴知道。谢谢你的信息@德班詹布,它有效!我猜Firefox驱动程序(
webdriver.Firefox.profile
)不再适用于Firefox 47+(),取而代之的是Firefox 47+的gecko驱动程序。是吗?谢谢你的回答!不幸的是,尽管我已经更新了我的JDK并运行了CCleaner,但仍然出现了相同的错误。我目前对Chrome和IE没有问题。只要你在JDK上,次要版本就不重要了8@User2018在我的答案中添加了一个更新。让我知道状态。谢谢更新。恐怕我要到星期一才能公布结果,但我会尽快通知你的@科里·戈德伯格很高兴知道。谢谢你的信息@德班詹布,它有效!我猜Firefox驱动程序(
webdriver.Firefox.profile
)不再适用于Firefox 47+(),取而代之的是Firefox 47+的gecko驱动程序。正当