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 如何做到这一点。
我在配置方面遇到了一些问题,所以我创建了一个包含工作代码的示例存储库:
有:
在 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。
是否可以使用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 如何做到这一点。
我在配置方面遇到了一些问题,所以我创建了一个包含工作代码的示例存储库:
有:
在 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。