如何使用nightwatch.js中的链接文本单击链接

时间:2016-07-23 05:15:15

标签: javascript selenium nightwatch.js

说我的网页上有这些元素。

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

我想点击文字Two的链接。如何使用链接文本标识或单击该元素,而不使用任何唯一属性,如id或class。

在.Net中我可以使用driver.findElement(By.linkText("Images")).click();。 nightwatch.js中的等价物是什么

4 个答案:

答案 0 :(得分:8)

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

因此,使用XPath单击示例中的第二个链接:

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

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

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

答案 1 :(得分:3)

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();

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

现在有一种更好的方法,您可以使用任何记录的locator strategies。具体是id,css选择器,链接文本,部分链接文本,标记名称,xpath。)

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