使用 Watir 让文本变得强大

Getting text in strong with 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 class,我只需要包含一个strong的那个。 页面上有多个strong,但是里面只有一个business-linkclass。

我试过了:

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)

有什么想法吗?

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

下面的代码打印第一个强标签值

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

这将打印第二个。

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

遍历所有元素

b.elements(:tag_name,'strong').each do |i|
    puts i.text
end

browser.a(:class => /business-link/).strong.text 的问题是它找到第一个 link 和 class "business-link" 然后 在里面link,查找 strong 元素。第一个 link 不是带有 strong 元素的那个。您真正想要告诉 Watir 的是找到第一个还包含 strong 元素的 link。

您可以创建 link 的集合并遍历它们直到找到 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"