2016-07-29 3 views
1

Ich habe 2 Links mit der gleichen ID 2 und anderen TextCapybara - Suche nach einem Element mit der Id & Text oder mit mehreren Eigenschaften

<li class=""> 
<a href="#" id="2">2</a> 
</li> 

<li class=""> 
<a href="#" id="2">Next</a> 
</li> 

jetzt wollte ich so etwas wie

page.find_by_id("2").has_text?("2") 

aber, es schreiben mit id = "2" ist nicht nicht sicher arbeitet, wie das Element zu finden & text = "2"

ich erhalte Fehler

Capybara::Ambiguous: Ambiguous match, found 2 elements matching id "2" 
+0

Fix Ihre hTML - nach den spec-IDs müssen eindeutig sein –

Antwort

1

Um die letzte Verbindung mit der ID "2" zu erhalten:

page.all(:css, "a[id='2']").last() 

Um die ersten Verbindung mit der ID "2" und Text "Next" zu erhalten:

page.find(:xpath, "//a[@id='2'][text()='Next']") 

die ersten Um Link mit dem Text "Next":

page.find_link("Next") 
+1

Du bist zweites Beispiel ist wahrscheinlich einfacher zu lesen geschrieben als 'page.find (: css, 'a [@ id =" 2 "]', Text: 'Weiter')' –

+0

Danke Florent, Warum verwenden wir. Last() für die Seite. find (: xpath, "// a [@ id = '2'] [text() = 'Weiter']"). last() wird es kein eindeutiges Ergebnis bringen? – testerBDD

+0

@Achyuth Pydmarri, es war eine Kopie/Pastetenfehler. –

Verwandte Themen