概述

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
}