通过 XPath 查找元素
概述
XPath 代表 XML 路径语言。它使用非 XML 语法提供了一种灵活的方式来查找网页中的元素。
Nightwatch 支持在定位元素时使用 XPath 选择器。如果未指定策略,则默认使用 CSS 选择器,并且有几种方法可以使用 XPath,具体取决于用例。
1. 使用 .useXpath() 命令
使用 useXpath()
命令,如以下示例所示,是一种便捷的方式。您无需费心使用元素命令上的多个参数,或者您可能在同一个测试中有多个后续元素命令/断言使用 XPath 表达式。要切换回 CSS,请调用 useCss()
。
tests/sampleTest.js
module.exports = {
demoTest: function (browser) {
browser
.useXpath() // every selector now must be xpath
.click("//tr[@data-recordid]/span[text()='Search Text']")
.useCss() // we're back to CSS now
.setValue('input[type=text]', 'nightwatch')
}
};
2. 使用 XPath 选择器查找元素
您也可以直接在单个命令或断言上使用 XPath,方法是传递一个 元素选择器对象,或者将 'xpath'
策略指定为第一个参数。
tests/sampleTest.js
module.exports = {
demoTest(browser) {
// using element selector objects
browser.click({
selector: '//tr[@data-recordid]/span[text()='Search Text']',
locateStrategy: 'xpath'
});
// specifying xpath strategy as first argument
browser.click('xpath', '//tr[@data-recordid]/span[text()='Search Text']');
}
};
3. 始终默认使用 XPath
如果您主要使用 XPath 表达式,并且希望避免始终在测试中配置策略,您还可以通过在 配置 中设置 use_xpath: true
属性来始终默认使用 XPath。
nightwatch.json
{
"use_xpath": true
}