2015-10-26 2 views
2

У меня есть таблица ниже HTML.Прокрутите строки и нажмите

<table> 
     <tr> 
      <td>Link 1</td> 
      <td>Archieved</td> 
     </tr> 
     <tr> 
      <td>Link 2</td> 
      <td>Terminated</td> 
     </tr> 
     <tr> 
      <td>Link 3</td> 
      <td>Active</td> 
     </tr> 
     <tr> 
      <td>Link 4</td> 
      <td>Archieved</td> 
     </tr> 
    </table> 

Здесь в основном я хочу, чтобы перебрать все строки и нажмите только если содержание во втором ряду не содержит Terminated.

В XSLT я использую xsl:for-each select, но в Selenium я не могу понять, как это сделать. Пожалуйста, дайте мне знать, как я могу нажать на строки, которые не содержат Terminated.

Благодаря

+0

Какие крепления для саленов вы используете? – alecxe

+0

Привет @alecxe, я использую Java – user3872094

ответ

2

Вы можете отфильтровать строки, не содержащие «Отменено» с одним выражением XPath:

//tr[td[2] != 'Terminated'] 

Вот как вы можете перебрать элементов, совпадающим селектор:

for(WebElement row: driver.findElements(By.xpath("//tr[td[2] != 'Terminated']"))) { 
    // do smth with a row 
} 
+0

Но мне нужно пройти через все строки и получить некоторые данные – user3872094

+0

@ user3872094 okay, добавлен пример, проверьте его. – alecxe

2

Вот как вы можете перемещаться по всем строкам, щелкать те, которые не соответствуют «завершенному» в виде текста, и делать то, что вам нравится, с другими строками:

List<WebElement> allRows = driver.findElements(By.xpath("//table/tr")) 

for (WebElement row : allRows) { 
    if (!row.findElement(By.xpath("./td[2]")).getText().contains("Terminated")) { 
     row.click(); 
    } 
    // get whatever you need from the rows here 
} 
Смежные вопросы