使用Watir获得强大的文本

时间:2016-10-27 13:43:29

标签: ruby watir

我正在尝试将文字放在<strong>内 Html代码是:

<div>
    <a class="business-link"></a>

    <a class="business-link">
        <strong>Text</strong>
    </a>

    <a class="business-link"></a>
</div>

页面上有多个business-link课程,我只需要包含strong的课程。 页面上有多个strong,但business-link类中只有一个browser.a(:class => /business-link/).strong.text

我试过了:

browser.link(:class => /business-link/).strong.text

unable to locate element, using {:tag_name=>"strong"} (Watir::Exception::UnknownObjectException)

但是在尝试时:

?

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

6

以下代码打印第一个强标记值

p b.element(:tag_name => 'strong').text

这将打印第二个。

p b.elements(:tag_name => 'strong')[0].text

迭代所有元素

p b.elements(:tag_name => 'strong')[1].text

答案 1 :(得分:0)

browser.a(:class => /business-link/).strong.text的问题在于它找到了第一个带有类&#34; business-link&#34;的链接。 然后在该链接中查找strong元素。第一个链接不是具有strong元素的链接。你真正想告诉Watir的是找到第一个也包含strong元素的链接。

您可以创建链接集合并迭代它们,直到找到strong元素:

business_links = browser.links(class: 'business-link')
business_link = business_links.find { |link| link.strong.exist? }
business_link.strong.text # or simply `business_link.text`
#=> "Text"

如果您对:css(或:xpath)定位器感到满意,可以更简洁地写为:

browser.strong(css: 'a.business-link > strong').text
#=> "Text"