總覽

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
}