为网站或 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 测试以了解更多信息。
推荐的下一步
现在您已经了解了为移动应用程序编写测试的基础知识,是时候更详细地了解选择器、命令和断言了。