Nightwatch入门指南
1.前言
1.1 安装和初始化
大多数情况下,为了执行命令或断言,nightwatch
需要向WebDriver
服务发起至少两次请求,第一次请求通过css
选择器或Xpath
表达式确定一个元素的位置,第二次请求才会在元素上执行实际的命令或断言。
安装WebDriver
服务可以通过直接下载二进制文件或使用NPM
软件包来完成。
可以选择使用Selenium Standalone Server
来管理各种浏览器驱动程序和服务,但从Nightwatch 1.0
开始不再需要,也不推荐使用,除非您针对旧浏览器(如Internet Explorer
)进行测试。
1 | { |
官方教程实在是造成了严重的误导,关键是你安装完chromedriver
这个包后,node_modules/.bin/chromedriver
目录下面确实有一个chromedriver
文件,但是我们需要的是chromedriver.exe
文件。
我们可以通过.path
属性获取包的安装路径(参考demo-01
),也可以手动输入(参考demo-05
)。
1 | const chromedriver = require('chromedriver'); |
chrome
端口号9515
。
firefox
端口号4444
,特别说明:firefox
需要传入debug
参数才能运行,这个坑真是坑死我了😂😂😂。
1 | { |
** window
下,firefox
默认寻找路径为C:\Program Files\Mozilla Firefox
,如果安装在其它路径,需要指定moz:firefoxOptions
属性或者使用--binary PATH
命令,告诉geckodriver
启动路径。
当你想要关闭测试时,请记住始终调用.end()
方法,以便正确关闭浏览器会话。
1.2 before[Each] and after[Each] hooks
在测试中,nightwatch
提供标准的before/after
和beforeEach/afterEach
的钩子。
before
和after
将分别在执行测试套件之前和之后运行,而beforeEach
和afterEach
分别在每个测试用例之前和之后运行(参见demo4-hooks)。
1.3 Asynchronous hooks
所有before[Each] and after[Each]
都可以执行异步操作,只需要将回调函数作为第二个参数传入。
1 | module.exports = { |
注意:当异步操作完成后,回调函数done
必需作为最后一个步骤被调用,否则会导致超时错误。默认的超时时间是10s,可以通过指定asyncHookTimeout
属性修改默认超时时间。
2. 运行测试
nightwatch
提供命令行的方式来运行测试和生成测试报告,同时提供多种配置选项。
1 | nightwatch [source] [options] |
2.1 指定测试实例source
除了在nightwatch.json
文件中配置src_folders
来指定需要进行测试的实例,同样可以在命令行中直接传入测试实例。
1 | // 测试单个文件 |
2.2 命令行选项options
名称 | 简写 | 默认值 | 描述 |
---|---|---|---|
–config | -c | ./nightwatch.json | 指定启动nightwatch的配置文件 |
–output | -o | tests_output | 指定测试报告的输出路径 |
–reporter | -r | junit | 预定义报告者的名称或要使用的自定义报告文件的路径。 |
–env | -e | default | 指定nightwatch的测试环境 |
–verbose | 在会话期间显示扩展的selenium命令日志记录 | ||
–version | -v | 显示版本号 | |
–test | -t | 指定测试实例 | |
–testcase | 只与–test一起使用 | ||
–group | -g | 指定测试组 | |
–skipgroup | -s | 指定需要跳过的测试组 | |
–filter | -f | 进行过滤操作 | |
–tag | -a | 通过标签进行过滤 | |
–skiptags | 跳过指定的标签 | ||
–retries | 重试失败或错误的测试用例达到指定的次数。 | ||
–suiteRetries | 重试失败或错误的测试套件(测试模块)达到指定的次数。 |
2.3 Test Environments
你可以定义测试设置的多个环境,以便覆盖每个环境的特定值。
默认default
环境是必需的。所有其他环境都是从默认环境继承的,可以根据需要覆盖设置。
1 | { |
通过指定--env
参数,我们可以选取特定的测试环(参见demo5-env
)。
1 | nightwatch --env integration |
2.4 Test Tags
我们还可以选择性地将测试目标定位为基于标签运行,以便测试可以属于多个标签。
标签可以通过将@tags
属性添加到测试模块来完成:
1 | module.exports = { |
通过命令行对测试标签进行控制:
1 | // 选择特定标签的测试模块 |
2.5 Disabling Tests
要阻止测试模块运行,只需将该模块中的disabled
属性设置为true
,如下所示:
1 | module.exports = { |
3. Page Objects
待续…
https://blog.csdn.net/qq_25324335/article/details/82052509
4. 更多
本文demo源码地址:>>>点我进入
本文作者 : 冰比冰水冰
原文链接 : http://iceiceice.top/2019/02/20/nightwatch/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!