Nightwatch.js 没有 Java

Nightwatch.js without Java

是否可以使用Nightwatch.js without installing Java? There are official Selenium JavaScript bindings (WebDriverJS, selenium-webdriver)。需要 Java 的原因是什么?

好吧Nightwatch.js 运行这是针对Selenium 服务器的测试。 Selenium 服务器是一个 Java-Servlet。

因此,要使用 Nightwatch.js,您只需 "indirectly" 需要 Java(Nightwatch.js 不需要,但 Selenium 不需要)。

但是您可以使用不同的语言作为 Selenium 客户端,因为您可以下载不同的 WebDriver 语言绑定 here

++++++++++++++++++编辑++++++++++++++++++

那些 WebDrivers/bindings 独立于 Nightwatch.js。如果您的测试和浏览器 运行 在同一台机器上,您可以在没有 Selenium 服务器的情况下使用这些 WebDrivers/bindings。在这种情况下,您不需要 Java,因为 WebDriver 运行 直接针对浏览器进行测试(这将进一步详细说明 here

另一方面,

Nightwatch.js 肯定需要 java,因为它需要写在 Java 中的 "Selenium-Standalone-Server"。据我所知,其他语言没有其他实现,这就是为什么没有 java.

就不可能 运行 它的原因

Nightwatch 将 HTTP 请求发送到 Selenium-Standalone-Server(java),服务器与浏览器建立会话。

所以总结一下:没有 Java --> 没有 "Selenium-Standalone-Server" --> 没有测试 Nightwatch.js

我正在为一个 JavaScript 社区服务,所以我尝试在本地 运行 nightwatchjs 而不介绍 Java 我自己。我敢肯定,如果您 运行 一个远程 Selenium 服务器,则该远程实例必须让 Java 服务器 运行 将命令传递给远程 browser-specific driver .例如:ChromeDriver.

也就是说,我的印象是可以连接上面所说的 standard client directly to a standard WebDriver (ChromeDriver) locally without having to stage the Java selenium-server-standalone-2.xx.0.jar server. With nightwatchJS being the 1st client I have tried, it was very hard to find a configuration where that would work since all the documentation indicates what Nate Stone。我看到的所有例子都表明需要规定selenium-server-standalone-2.xx.0.jar的位置:

selenium": {
  "start_process": true,
  "server_path": "lib/selenium-server-standalone-2.53.0.jar",
  "cli_args" : {
    "webdriver.chrome.driver" : "/Users/greg.kedge/bin/chromedriver"
  },
  "log_path": "integration/log" }

他就是我能说的:如果你想让 nightwatch 在测试期间为你启动(和停止)服务器("start_process":正确),似乎有必要 运行 Java 服务器。

不过,经过多次尝试,如果你想在命令行上自己启动ChromeDriver,从而一直启动,我可以 运行 ChromeDriver 没有 Java Selenium 独立。警告:到目前为止只在 OS X 上尝试过......所以,假设 ChromeDriver 在你的 $PATH:

% chromedriver --url-base=/wd/hub
Starting ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) on port 9515
Only local connections are allowed.

现在获取该端口 (9515) 并更新您的 nightwatch.json 以决定您要使用 Chrome。我正在设置默认值,但您可以设置 Chrome-specific 环境。从你的 nightwatch.json 中完全移除 "selenium" 块,现在告诉 nightwatch 在哪里可以找到 运行ning 服务器 AND 正在服务的浏览器类型:

  "test_settings": {
    "default": {
      "launch_url": "http://localhost:8888/",

      "selenium_host": "127.0.0.1",
      "selenium_port": "9515", 

      "silent": true,
      "firefox_profile": false,
      "screenshots": {
        "enabled": false,
        "path": ""
      },
      "desiredCapabilities": {
        "browserName": "chrome",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "__commentOut: chromeOptions" : {
              "args" : ["start-fullscreen"]
            }
      },
    }
  }

以这种方式使用它对我有用;在没有 Java Selenium 独立服务器 in-play 的情况下,我可以 运行 守夜人驾驶 Chrome。同样,这是在 OS X 上使用 ChromeDriver 即 always 运行ning。我无法弄清楚如何在不添加 Java Selenium 独立服务器的情况下让 nightwatch 管理 starting/stopping ChromeDriver。

现在 documentation on the official site 如何做到这一点。

我在配置方面遇到了一些问题,所以我创建了一个包含工作代码的示例存储库:

https://github.com/zeljkofilipin/mediawiki-nightwatch

有:

global.js 文件中指定以下内容:

const chromedriver = require('chromedriver');

module.exports = {

before: function (cb) {
    chromedriver.start();
    cb();
},
after: function (cb) {
    chromedriver.stop();
    cb();
},

转到 nightwatch.conf.js 在那里指定全局路径

这样,您的 selenium 将通过 Chromedriver 转移,而您的机器上不需要 selenium。