В Watir, как я могу получить доступ к тексту внутри <dd>? - PullRequest
2 голосов
/ 03 марта 2011

Вот как выглядит HTML:

<dt> Static text. </dt>
<dd>
    <a onclick="bunch of ajax stuff", href="#">
        Dynamic Text!
    </a>
</dd>

Я пытался использовать <dt>, чтобы найти элемент <dd> с кодом $browser.dd(:after? => $browser.dt(:text => /Static text./)).text, но это выдает ошибку undefined method 'join' for #<String:0xblah>. У дд нет идентификатора или чего-либо, с чем можно было бы его найти. Я смог получить .text из него, выполнив поиск по регулярному выражению его части в irb, но это не сработает в долгосрочной перспективе, так как это динамическое значение.

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Полагаю, ваш HTML выглядит следующим образом, включая ваш комментарий выше. Это правильно?


<dl>
<dt> Static text. </dt>
<dd>
    <a onclick="bunch of ajax stuff", href="#">
        Dynamic Text!
    </a>
</dd>
<dd id='foo'>
    bar
</dd>
</dl>

Если это так, вы можете получить первый текст DD, подобный этому.

browser.dt(:text,/Static text/).parent.dd(:index,1).text

или

browser.dt(:text,/Static text/).parent.dds.first.text

Если вы можете легко получить второй ДД, то стоит попробовать следующее, я думаю

browser.dd(:id,'foo').parent.dds.first.text

или

browser.element(:id,'foo').parent.dds.first.text

или .. Если целевой DD всегда является следующим братом DT, попробуйте element_by_xpath. Это мое последнее средство:)

browser.dt(:text,/Static text/).element_by_xpath('following-sibling::*').text
2 голосов
/ 03 марта 2011

Предполагая, что текст статуса уникален, вы пробовали что-то вроде

 browser.dt(:text, /Static text/).dd(:index, 1).text
...