这是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,但由于它是一个动态值,因此长期效果不会很好。
答案 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