2016-10-27 8 views
0

Text ist stark Ich versuche, den Text innerhalb <strong> zu erhalten.
HTML-Code ist:Text mit Watir in

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

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

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

Es gibt mehr business-link Klasse auf der Seite, ich brauche nur denjenigen, der ein strong enthalten. Es gibt mehrere strong auf der Seite, aber nur eine innerhalb einer business-link Klasse.

Ich habe versucht:

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

und

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

Aber wenn man versucht:

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

Jede Idee?

Antwort

0

Das Problem mit browser.a(:class => /business-link/).strong.text ist, dass es die erste Verbindung mit Klasse "Business-link" und dann, in diesem Link findet, sucht die strong Element. Die erste Verbindung ist nicht die mit dem Element strong. Was Sie Watir wirklich mitteilen möchten, ist, den ersten Link zu finden, der auch ein strong Element enthält.

Sie könnten eine Sammlung der Links erstellen und durch sie durchlaufen, bis ein strong Element finden:

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" 

Wenn Sie sind komfortabel mit :css (oder :xpath) Locators kann dies mehr wird kurz und bündig geschrieben als:

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

Thx es funktioniert, Sie richtig ': css' ist bequemer – Rubyx

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

Der folgende Code Druck wird der erste starke Tag-Wert

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

diese zweite drucken.

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

iterieren alle Elemente

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

Es gibt mehrere 'starke' auf der Seite, aber nur eine innerhalb einer' business-link' Klasse. So funktioniert es nicht – Rubyx