2012-04-03 2 views
1

Используя 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!»).

Что было бы хорошим способом найти ссылку «Просмотр», ссылаясь на текст «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

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

(//td[normalize-space() ="Buenos Dias!"])[1]/following-sibling::td[2]/a[. = 'View'] 
+0

Спасибо Димитр! Это сработало для меня. – RaymundS

+0

@ RaymundS: Добро пожаловать –

0
//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(),'[email protected]')]/following-sibling::td/a[@id='edit.png']")).click(); 
0

(//td [normalize-space() = "Buenos Dias!"]) [1]/next-sibling :: td [ 2]/а [. = 'Вид']

Смежные вопросы