2012-12-06 4 views
14

Ich verwende Capybara, um Test in meiner Anwendung zu schreiben, aber jetzt habe ich eine Situation, in der ich ID eines Elements in Capybara wieWie ID eines Elements zu erhalten, wenn Capybara für Test (Rails)

lesen muss

myid = page.find("#parentNode").first(".childClass").id

halte ich die folgenden HTML-Struktur haben

<div id="parentNode"> 
<div id="childNode1" class="childClass">1</div> 
<div id="childNode2" class="childClass">2</div> 
</div> 

Bitte beachten Sie: ich versuche nicht, den Inhalt des untergeordneten Knoten zu lesen, aber die ID. Das oben gezeigte ist zum Beispiel.

Erwartete Ausgabe:. childNode1 (id des ersten Elements mit Klasse Child

Antwort

25

Sie sind fast in der Nähe der Antwort. Die einzige Änderung ist, anstatt Id als Methode aufzurufen, müssen Sie es als Attribut wie folgt aufrufen

+0

Gute Antwort. Ich möchte nur hinzufügen, dass, wenn Sie die ID in einer Variablen speichern möchten, sollten Sie etwas wie diese tun 'myid = "#" + page.find ("# parentNode"). Zuerst (". ChildClass") [: id] ' –

1

ich in diesem Fall einige XPath anstelle von CSS verwenden würde Hinweis ich nicht, dass qualifizierte bin zuerst in xpathing so verwende ich CSS finden parentNode.

find(#parentNode).find(:xpath, div[1]).id 

bereit und sehen, ob es funktioniert.

optional können Sie CSS in den zweiten als auch verwenden, finden und die Klasse als Kriterien verwenden, da es findet S ist das erste Element sowieso.

0

Die Antwort bekommen .. !!

Wir können page.evaluate_script verwenden, um dies zu erreichen. Ich habe den Code unten

page.evaluate_script('$("#parentNode .childNode").first().attr("id")')

Hoffnung dieser einige helfen :)