2009-11-13 17 views
5

Я пишу сценарий Selenium. Для html-страницы есть таблица, я не могу использовать «css = table tr: nth-child (2) td: nth-child (3) a», чтобы найти ссылку в таблице. Selenium IDE дает мне «локатор [ошибка] не найден».Selenium: не удалось найти ссылку в таблице

Но используйте «css = table tr: nth-child (2)», он может найти строку. Так я ошибаюсь для локатора css, я думаю, что добавление «td: nth-child (3)« должно работать для ссылки в td, почему бы и нет?

Edit: Я использую Firefox 3.0.15

ответ

8

Учитывая HTML:

<html> 
    <body> 
    <table> 
     <tr><td>Hello</td><td>World</td></tr> 
     <tr><td>I'm</td><td><a href="http://www.example.com/">Batman</a></td></tr> 
    </table> 
    </body> 
</html> 

Вы можете использовать следующий локатор для ссылки во 2-й колонке 2 строки:

css=tr:nth-child(2) > td:nth-child(2) > a 

Update:

После немного исследований, кажется, ваш оригинальный локатор должен работать, но не из-за ошибки в библиотеке cssQuery, используемой Selenium (http://jira.openqa.org/browse/SEL-698). Мое предложение выше работает, но это действительно только обходной путь, пока ошибка не будет исправлена. К сожалению, учитывая, что cssQuery не обновлялся некоторое время, я не знаю, как скоро это будет рассмотрено.

+0

Это работает, спасибо. – zhongshu

0

Аналогичная проблема все еще вокруг в Selenium IDE 2.1.0

Я проверяю группу веб-сайтов, чтобы проверить, является ли конкретный URL был изменен.

Ссылку я должен проверить в таблице, в 25-м или около тр сверху ...

<tr> 
<td> 
<div align="center"> 
<font color="#FFFFFF"> 
<a target="_blank" href="http://[The link I need to test] ... 

Я использовал оба

assertElementPresent //*[starts-with(@href,'The Link')] 

и

assertElementPresent //*[contains(@*,'The Link')] 

В некоторых случаях первый может найти результат, а второй - нет. Большую часть времени и не найдет ссылку.

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