Nightwatch:从selenium服务器检索新会话时出错

时间:2017-07-26 10:22:24

标签: selenium selenium-chromedriver selenium-grid nightwatch.js

我有一个简单的测试来打开chrome中的launch_url。但我收到错误,因为无法检索任何新会话。

另外,我想知道如何在不运行网格的情况下使用夜视仪。只是一个独立的实例。

以下是我使用的配置。

article_id:integer

当我使用命令nightwatch --env chrome或只是nightwatch运行nightwatch时,它会给我以下错误

{
  "src_folders" : ["tests"],
  "output_folder" : "reports",
  "custom_commands_path" : "",
  "custom_assertions_path" : "",
  "page_objects_path" : "",
  "globals_path" : "",

  "selenium" : {
    "start_process" : false,
    "server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
    "log_path" : "",
    "port" : 4444,
    "cli_args" : {
      "webdriver.chrome.driver" : "./bin/chromedriver.exe",
      "webdriver.gecko.driver" : "",
      "webdriver.edge.driver" : ""
    }
  },

  "test_settings" : {
    "default" : {
      "launch_url" : "http://127.0.0.1",
      "selenium_port"  : 4444,
      "selenium_host"  : "127.0.0.1",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "firefox",
        "marionette": true
      }
    },

    "chrome" : {
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true
      }
    },

    "edge" : {
      "desiredCapabilities": {
        "browserName": "MicrosoftEdge"
      }
    }
  }
}

我的测试看起来像

[Test1] Test Suite
======================

Running:  Demo test
http://127.0.0.1

Error retrieving a new session from the selenium server

Connection refused! Is selenium server started?
{ status: 13,
  value:
   { message: 'Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Test1, browserName=chrome, javascriptEnabled=true, platform=ANY}]',
     class: 'org.openqa.grid.common.exception.GridException' } }

我可以看到启动网址已登录到控制台,但浏览器无法启动。我正在使用最新的jar文件和chromedriver二进制文件。

1 个答案:

答案 0 :(得分:4)

我刚刚尝试了这个,这就是我想出来的

selenium配置部分,我发现您已将start_process设为false

"selenium" : {
    "start_process" : false,
    "server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
    "log_path" : "",
    "port" : 4444,
    "cli_args" : {
      "webdriver.chrome.driver" : "./bin/chromedriver.exe",
      "webdriver.gecko.driver" : "",
      "webdriver.edge.driver" : ""
    }
},

当你的值为false时,你基本上可以摆脱这个部分本身(因为根据你的配置它根本不会被使用)

你基本上告诉守夜人它不应该尝试自己启动selenium-server,但它应该只连接到在4444端口上运行的selenium服务器(这些值来自defaulttest_settings部分

的部分
"default" : {
    "launch_url" : "http://www.google.com",
    "selenium_port"  : 4444,
    "selenium_host"  : "127.0.0.1",
    "silent": false,
    "screenshots" : {
    "enabled" : false,
    "path" : ""
    },
    "desiredCapabilities": {
    "browserName": "firefox",
    "marionette": true
    }
},

到目前为止我们还不错。因此,在您运行nightwatch命令之前,我猜测您启动了selenium服务器,但模式不正确。

我认为您使用以下命令

启动了服务器

java -jar selenium-server-standalone-3.4.0.jar -role hub

这会导致Hub启动。集线器就像manager。它本身无法完成工作(启动浏览器,打开网址,键入文本,点击链接等)。它需要node可用,以便它可以将所有工作路由到节点。

错误Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Nightwatchtest, browserName=firefox, javascriptEnabled=true, platform=ANY}]'本质上是Selenium Grid告诉您的方式,您没有连接任何节点以便将流量路由到。

因此,为了解决您的问题,您可以执行以下操作之一:

  1. 使用命令java -jar selenium-server-standalone-3.4.0.jar(或)
  2. 以独立模式[既不作为集线器也不作为节点]启动selenium服务器
  3. 将配置文件中的标记start_process翻转为true,这将导致夜间计划自行启动和停止服务器。