为网站或 Web 应用程序编写测试
概述
Nightwatch 提供了简单而全面的 API,用于与 Web 元素交互,并执行各种操作和断言。在 Nightwatch v3 中,引入了全新的元素 API,使编写测试更加简单和简洁。
Nightwatch 检查器 使编写测试更容易,因为它提供了长期有效的选择器推荐。
如果您对编码了解甚少或没有编码经验,也可以使用我们的 Chrome 录制器扩展 来录制测试并使用 Nightwatch 运行它们。
查找元素
在您与元素交互或执行断言之前,您必须使用选择器从 DOM 树中查找元素。Nightwatch 支持多种选择器,使查找元素变得轻而易举。您可以使用 .find() 和 .findAll() 相关命令来完成此操作。
- CSS 选择器 :
browser.element.find('css selector'); browser.element.findAll('css selector'); - xPath 选择器 :
browser.element.find(by.xpath(('xpath string')); browser.element.findAll(by.xpath(('xpath string')); - 按角色 :
browser.element.findByRole('role'); browser.element.findAllByRole('role'); - 按文本 :
browser.element.findByText('text'); browser.element.findAllByText('text'); - 按占位符文本 :
browser.element.findByPlaceholderText('placeholder text'); browser.element.findAllByPlaceholderText('placeholder text'); - 按标签文本 :
browser.element.findByLabelText('label text'); browser.element.findAllByLabelText('label text'); - 按替代文本 :
browser.element.findByAltText('alt text'); browser.element.findAllByAltText('alt text');
除了查找命令之外,Nightwatch 还提供了便利方法,这些方法可以帮助在更复杂的情况下查找方法。
- 查找元素数组中的第 n 个元素
.nth(index) - 查找元素数组的数量
.count()
查找嵌套元素
在这一组强大的选择器之上,Nightwatch 还支持选择器链接。
browser.element.find('CSS selector').findByText('text').click();
// or
browser.element.findAll('CSS selector').nth(2).findByText('text').click();
有关选择器的更详细指南和示例,请参阅此 指南。
命令
找到元素后,您可以使用命令与它们进行交互。
交互命令
- 点击 :
browser.element.find('selector').click(); - 双击 :
browser.element.find('selector').doubleClick(); - 右键单击 :
browser.element.find('selector').rightClick(); - 在输入框中键入内容 :
browser.element.find('selector').sendKeys('text'); - 设置值 :
browser.element.find('selector').setValue(); - 清除 :
browser.element.find('selector').clear();
.find(),您还可以使用其他查找相关方法,例如 .findByText()、.findByRole(),然后加上命令。获取元素详细信息
- 获取文本 :
browser.element.find('selector').getText(); - 获取值 :
browser.element.find('selector').getValue(); - 获取标签名称 :
browser.element.find('selector').getTagName(); - 获取属性 :
browser.element.find('selector').getAttribute(); - 获取 CSS 属性 :
browser.element.find('selector').getCssProperty(); - 获取 ID :
browser.element.find('selector').getId(); - 获取可访问性名称 :
browser.element.find('selector').getAccessibilityName(); - 获取矩形 :
browser.element.find('selector').getRect();
更新元素详细信息
- 设置文本 :
browser.element.find('selector').setText('text'); - 设置属性 :
browser.element.find('selector').setAttributes('attribute', 'attribute value');
设置浏览器上下文
- 设置地理位置 :
browser.setGeolocation({latitude:, longitude: , accuracy: 100});
有关详细示例,请参阅此 指南。
断言
编写自动化测试的主要目的是设置通过断言。使用 Nightwatch 进行断言有两种方法。
您可以使用内置断言。
- 文本等于 :
browser.element.find('selector').getText().assert.equals('text'); - 文本包含 :
browser.element.find('selector').getText().assert.contains('text'); - 文本匹配 :
browser.element.find('selector').getText().assert.matches('regex'); - 值等于 :
browser.element.find('selector').getValue().assert.equals('text'); - 值包含 :
browser.element.find('selector').getValue().assert.contains('text'); - 值匹配 :
browser.element.find('selector').getValue().assert.matches('regex'); - URL 等于 :
browser.assert.urlEquals('text'); - URL 包含 :
browser.assert.urlContains('text'); - URL 匹配 :
browser.assert.urlMatches('regex'); - 可见 :
browser.element.find('selector').assert.visible();
Chai 预期
如果您喜欢 Chai 风格的断言,也可以使用 expect() 来执行断言。
- 文本等于 :
expect(element).text.to.equal(); - 文本包含 :
expect(element).text.to.contain(); - 文本等于 :
expect(element).text.to.match(); - 值等于 :
expect(element).value.to.equal(); - 值包含 :
expect(element).value.to.contain(); - 值等于 :
expect(element).value.to.match(); - URL 等于 :
expect(brower.url()).to.equal(); - URL 包含 :
expect(brower.url()).to.contain(); - URL 匹配 :
expect(brower.url()).to.match(); - 可见 :
expect(element).to.be.visible();
有关断言的详细示例,请参阅此 文章
使用 Nightwatch 检查器
Nightwatch 检查器是一个点按式工具,旨在节省您编写测试的时间,并帮助您编写更持久性的测试。它还允许您从 devtools 本身尝试 Nightwatch 命令。了解更多。
使用 Chrome dev 工具录制
或者,Nightwatch 提供了工具来帮助您入门,这些工具可以录制您在屏幕上的测试操作,并自动生成 Nightwatch 测试脚本,而无需编写任何代码。探索使用 Google Chrome DevTools 录制器 创建 Nightwatch 测试以了解更多信息。
推荐的下一步
现在您已经了解了为移动应用程序编写测试的基础知识,是时候更详细地了解选择器、命令和断言了。