Получить <TD>текст с помощью WATIR - PullRequest
4 голосов
/ 21 ноября 2011

Я использую WATIR для автоматического тестирования, и мне нужно скопировать в переменную значение ставки.В приведенном ниже примере (из исходного кода веб-страницы) мне нужна переменная myrate со значением 2.595.Я знаю, как извлечь значение из <input> или <span> (см. Ниже), но не напрямую из <td>.Любая помощь?Спасибо

<TABLE>
<TR>
    <TD></TD>
    <TD>Rate</TD>
    <TD>2.595</TD>
</TR>
</TABLE>

Для <span> Я использую этот код:

raRetrieved = browser.span(:name => 'myForm.raNumber').text

Ответы [ 3 ]

8 голосов
/ 21 ноября 2011

попробуйте это, найдите нужную строку, используя регулярное выражение для соответствия строке, содержащей слово «Rate», затем получите текст третьей ячейки в строке.

myrate = browser.tr(:text, /Rate/).td(:index => 2).text
 #or you can use the more user-friendly aliases for those tags
myrate = browser.row(:text, /Rate/).cell(:index => 2).text

Если слово «Оценить» может появиться в другом месте в другом тексте этой таблицы, но всегда является единственной записью во второй ячейке нужной строки, найдите ячейку с этим точным текстом, используйте родительский метод для поиска строка, содержащая эту ячейку, а затем получить текст из третьей ячейки.

myrate = browser.cell(:text, 'Rate').parent.cell(:index => 2).text

использование .cell & .row против .td & .tr зависит от вас, некоторые люди предпочитают теги, другие предпочитают более описательные имена. Использование того, что вы считаете, делает код наиболее читабельным для вас или других, кто будет с ним работать.

Примечание. Приведенный выше код предполагает использование Watir-Webdriver или Watir 2.x, в которых используется индексирование с нуля. Для более старых версий Watir измените значения индекса на 3

И, к сведению, я полностью согласен с комментариями других по поводу отсутствия тестируемости кода, который вы разместили. это ужасно Запрашивать что-то, чтобы найти подходящие элементы, такие как значения идентификаторов или имена, не так уж сложно с точки зрения упрощения тестирования страницы.

3 голосов
/ 21 ноября 2011

Попробуйте:

browser.td(how, what).text

Проблема здесь в том, что теги table, tr и td не имеют никаких атрибутов.Вы можете попробовать что-то вроде этого (не проверено):

browser.table[0][2].text
1 голос
/ 22 ноября 2011

Если это помогает любому, у кого возникла та же проблема, это работает для меня так:

browser.td(:text => "Rate").parent.cell(:index, 2).text

Спасибо всем

...