说我的网页上有这些元素。
<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中的等价物是什么
答案 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');