在Watir中,如何访问<dd>?</dd>中的文本

时间:2011-03-02 22:59:49

标签: internet-explorer firefox automated-tests watir firewatir

这是HTML的样子:

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

我尝试使用<dt>找到代码为<dd>的{​​{1}}元素,但这会产生$browser.dd(:after? => $browser.dt(:text => /Static text./)).text错误。 dd没有id或任何东西来定位它。我能够通过在irb中对其中的一部分进行正则表达式搜索来获取.text,但由于它是一个动态值,因此长期效果不会很好。

2 个答案:

答案 0 :(得分:2)

假设状态文本是唯一的,您是否尝试了

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

答案 1 :(得分:2)

我认为您的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

如果您可以轻松获取第二个DD,我认为以下值得尝试

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