2016-07-23 3 views
4

Скажем, у меня есть эти элементы на моей веб-странице.Как щелкнуть ссылку, используя текст ссылки в nightwatch.js

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

Я хочу, чтобы нажать на ссылку с текстом Two. Как идентифицировать или щелкнуть этот элемент, используя Текст ссылки без каких-либо уникальных атрибутов, таких как идентификатор или класс.

В .Net Я могу использовать driver.findElement(By.linkText("Images")).click();. Что такое эквивалент в nightwatch.js

ответ

2

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

Первые парами для 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(); 
1

Единственный способ, который работал для меня, заключался в использовании:

.useXpath() 
.click("//*[contains(text(), 'Two')]") 
.useCss()  
Смежные вопросы