如何在 nightwatch.js 中使用 link 文本单击 link

How to click a link using link text in nightwatch.js

假设我的网页上有这些元素。

<a href="/dynamic1">One</a> 
<a href="/dynamic2">Two</a> 
<a href="/dynamic3">Three</a>

我想单击带有文本 Two 的 link。如何使用 Link 文本 识别或单击没有任何唯一属性(如 id 或 class)的元素。

在 .Net 中我可以使用 driver.findElement(By.linkText("Images")).click();。 nightwatch.js

中的等价物是什么

elements() 方法的第一个参数是 定位器策略 ,使用 link text - 它受支持:

client
  .url('http://website.org')
  .waitForElementVisible('body', 1000)
  .elements('link text', 'Two', function (result) {

    for (var i = 0; i < result.value.length; i++) {
      var element = result.value[i];

      // do something
    }
  })
  .end();

定位器 By.linkText 在内部使用 XPath。

因此,单击带有 XPath 的示例中的第二个 link:

.useXpath()     // every selector now must be XPath
.click("//a[text()='Two']")
.useCss()      // we're back to CSS now

请注意,根据内部 HTML,您可能需要连接子项和 trim 空格:

.click("//a[normalize-space()='Some link']")

对我有用的唯一方法是使用:

.useXpath()
.click("//*[contains(text(), 'Two')]")
.useCss()      

现在有更好的方法,您可以使用任何已记录的 locator strategies。任何一个; id, css selector, link text, partial link text, tag name, xpath.)

browser
  .click('link text', 'Some Link Text');