2016-10-27 43 views
0

我試圖獲取<strong>中的文字。
HTML代碼:與Watir一起使用文本

<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) 

任何想法?

回答

0

browser.a(:class => /business-link/).strong.text的問題是,它發現有類「業務聯繫」該鏈接中然後,第一個鏈接,查找該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" 
+0

Thx它的工作,你正確':css'更舒適 – Rubyx

0
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 
+0

頁面上有多個'strong',但在'business-link'類中只有一個。所以它不起作用 – Rubyx