使用 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
}