Выберите ссылку в строке таблицы на основе содержимого ячейки - PullRequest
2 голосов
/ 03 апреля 2012

Используя Selenium IDE, я пытаюсь найти ссылку в строке таблицы. Строки таблицы генерируются динамически. В каждой строке есть ячейка с текстовым содержимым и ячейка с двумя или более ссылками.

То, что я хотел бы сделать, - это создать автоматический тест, который нажимает на конкретную ссылку в определенной строке, на которую ссылается конкретный текст. Например, в таблице ниже:

<html>
<body>
<table border="1">
 <tr>
   <td>
    Hello World!
   </td>
   <td>
    Type Greeting
   </td>
   <td>
    <a href="www.foo.com/view/id=123456">View</a>
    <a href="www.foo.com/delete/id=123456">Delete</a>
   </td>
 </tr>
 <tr>
   <td>
    Buenos Dias!
   </td>
   <td>
    Type Greeting 
   </td>
   <td>
    <a href="www.foo.com/view/id=789101">View</a>
    <a href="www.foo.com/delete/id=789101">Delete</a>
   </td>
 </tr>
</table>
</body>
</html>

Сценарий таков, что на предыдущей странице я добавляю данные "Buenos Dias!". На следующей странице отобразится таблица всех добавленных данных. Я хочу иметь возможность щелкнуть ссылку «Просмотр» только что добавленных данных (в данном случае запись «Buenos Dias!»).

Какой будет хороший способ найти ссылку «Просмотр», ссылаясь на текст «Буэнос-диас!»?

Я могу найти ячейку с текстом:

//td[text()="Buenos Dias!"] 

Но я хочу каким-то образом использовать его как ссылку для поиска соответствующей ссылки «Просмотр» из таблицы. Я попробовал форматы родного брата (следующий, предыдущий), и я не могу заставить его работать правильно. Использование абсолютного xpath (html / body / table / tbody / tr [1] / td [3] / a [1]) не сработает, поскольку данные могут измениться, и запись появится в другой строке.

Заранее спасибо, и дайте мне знать, если вам нужна дополнительная информация.

  • Селен IDE 1.7.2
  • Firefox 9.0.1
  • Mac OS X Lion 10.7.3

Ответы [ 3 ]

4 голосов
/ 03 апреля 2012

Использование :

(//td[normalize-space() ="Buenos Dias!"])[1]/following-sibling::td[2]/a[. = 'View']
0 голосов
/ 29 июня 2017

(// td [normalize-space () = "Buenos Dias!"]) [1] / follow-sibling :: td [2] / a [.= 'Просмотр']

0 голосов
/ 03 апреля 2015
//find table first
 WebElement q=  d.findElement(By.xpath("//*[@id='applicationcontent']/div[6]/table/tbody/tr"));

// find a unique value of the row and click on link of the row which is after the text you find.
         q.findElement(By.xpath("//td[contains(text(),'abcd@gmail.com')]/following-sibling::td/a[@id='edit.png']")).click();
...