使用 Node 和 Nightwatch 设置 Selenium
Selenium Setup With Node and Nightwatch
因此,我目前正在尝试查看具有 Node.js 的非常基本的 selenium 设置对于 Work 来说是什么样子,以便我们可以开始实施 E2E 测试。
所以我用 express
启动了一个基本的 node.js 服务器
const express = require('express');
const path = require('path')
const app = express()
const PORT = 3000
app.use(express.static('public'))
app.get('/', (req,res) => res.status(200).end() );
app.listen(PORT, 'localhost', (req,res) => console.log(`port running on ${PORT}`))
为了测试,我启动了一个非常基本的 html/css/js FE
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<link rel="stylesheet" href="./styles.css">
<body>
<div id="testing-file">
This is a test
<span>
<p id="ryan">Ryan</p>
</span>
</div>
<script>
console.log('hello')
</script>
</body>
</html>
//样式
#testing-file {
color: red;
font-size: 2em;
}
#ryan {
color: blue;
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
}
现在是测试设置,这是我第一次使用 Selenium 并且真正尝试像这样从头开始设置 E2E。所以,在阅读了整个上午的文档之后,我就来了。
Nightwatch.json 文件
{
"src_folders" : ["tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"server_path" : "",
"log_path" : "",
"port" : 9515,
"cli_args" : {
"webdriver.chrome.driver" : "./chromedriver/",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost:3000",
"selenium_port" : 9515,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome"
}
},
"edge" : {
"desiredCapabilities": {
"browserName": "MicrosoftEdge"
}
}
}
}
nightwatch.js 文件
module.exports = {
src_folders: ['test/e2e/']
}
test.js 文件
module.exports = {
'step one' : browser => {
browser
.url('http://localhost:3000')
.waitForElementVisible('body', 200);
}
}
现在我正在学习基础知识,但是当我 运行 测试时,我收到错误:
[E2e\test] Test Suite
=========================
Running: step one
Error processing the server response:
unknown command: wd/hub/session
Error retrieving a new session from the selenium server
Connection refused! Is selenium server started?
{ value: -1, error: 'Unexpected token u in JSON at position 0' }
所以我相信我当然没有正确设置 selenium 网络驱动程序,这很可能是我的问题所在,因为它非常困难。注意事项,我在windows。我确实将我的 PATH 变量设置为在我的项目文件夹中有 selenium 驱动程序的路径。它似乎试图 运行 测试,但问题似乎与 selenium 驱动程序没有启动有关。
我的节点服务器在 3000 上,如果我双击 windows 网络驱动程序应用程序,它只是提供静态文件和硒,它说驱动程序在端口 9515 上。现在我已经在网上阅读了所有内容说 4444 上的端口,但我真的不明白我现在在读什么。所以基本上我需要 运行 在浏览器上进行一个简单的测试,chrome。如果需要任何其他信息,请告诉我
您的 nightatch.json 中的服务器路径为空。
应该是这样的:
"selenium": {
"start_process": true,
"server_path": "./node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.0.jar",
"log_path": "reports",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "./node_modules/chromedriver/lib/chromedriver/chromedriver",
"webdriver.ie.driver": ""
}
},
其中路径是selenium jar的实际位置。每个新版本的 nightwatch 似乎都移动了硒罐,有时甚至将其完全移除,因此您可能也必须安装它。
因此,我目前正在尝试查看具有 Node.js 的非常基本的 selenium 设置对于 Work 来说是什么样子,以便我们可以开始实施 E2E 测试。
所以我用 express
启动了一个基本的 node.js 服务器const express = require('express');
const path = require('path')
const app = express()
const PORT = 3000
app.use(express.static('public'))
app.get('/', (req,res) => res.status(200).end() );
app.listen(PORT, 'localhost', (req,res) => console.log(`port running on ${PORT}`))
为了测试,我启动了一个非常基本的 html/css/js FE
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<link rel="stylesheet" href="./styles.css">
<body>
<div id="testing-file">
This is a test
<span>
<p id="ryan">Ryan</p>
</span>
</div>
<script>
console.log('hello')
</script>
</body>
</html>
//样式
#testing-file {
color: red;
font-size: 2em;
}
#ryan {
color: blue;
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
}
现在是测试设置,这是我第一次使用 Selenium 并且真正尝试像这样从头开始设置 E2E。所以,在阅读了整个上午的文档之后,我就来了。
Nightwatch.json 文件
{
"src_folders" : ["tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"server_path" : "",
"log_path" : "",
"port" : 9515,
"cli_args" : {
"webdriver.chrome.driver" : "./chromedriver/",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost:3000",
"selenium_port" : 9515,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome"
}
},
"edge" : {
"desiredCapabilities": {
"browserName": "MicrosoftEdge"
}
}
}
}
nightwatch.js 文件
module.exports = {
src_folders: ['test/e2e/']
}
test.js 文件
module.exports = {
'step one' : browser => {
browser
.url('http://localhost:3000')
.waitForElementVisible('body', 200);
}
}
现在我正在学习基础知识,但是当我 运行 测试时,我收到错误:
[E2e\test] Test Suite
=========================
Running: step one
Error processing the server response:
unknown command: wd/hub/session
Error retrieving a new session from the selenium server
Connection refused! Is selenium server started?
{ value: -1, error: 'Unexpected token u in JSON at position 0' }
所以我相信我当然没有正确设置 selenium 网络驱动程序,这很可能是我的问题所在,因为它非常困难。注意事项,我在windows。我确实将我的 PATH 变量设置为在我的项目文件夹中有 selenium 驱动程序的路径。它似乎试图 运行 测试,但问题似乎与 selenium 驱动程序没有启动有关。
我的节点服务器在 3000 上,如果我双击 windows 网络驱动程序应用程序,它只是提供静态文件和硒,它说驱动程序在端口 9515 上。现在我已经在网上阅读了所有内容说 4444 上的端口,但我真的不明白我现在在读什么。所以基本上我需要 运行 在浏览器上进行一个简单的测试,chrome。如果需要任何其他信息,请告诉我
您的 nightatch.json 中的服务器路径为空。
应该是这样的:
"selenium": {
"start_process": true,
"server_path": "./node_modules/selenium-server/lib/runner/selenium-server-standalone-2.53.0.jar",
"log_path": "reports",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "./node_modules/chromedriver/lib/chromedriver/chromedriver",
"webdriver.ie.driver": ""
}
},
其中路径是selenium jar的实际位置。每个新版本的 nightwatch 似乎都移动了硒罐,有时甚至将其完全移除,因此您可能也必须安装它。