2012-12-06 8 views
14

Sto utilizzando Capybara per scrivere test nella mia applicazione, ma ora ho una situazione in cui ho bisogno di leggere l'id di un elemento all'interno di capybara comeCome ottenere un identificativo di un elemento quando si utilizza Capybara per test (Rails)

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

Considerate ho la struttura sottostante HTML

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

Nota: io non sto cercando di leggere il contenuto del nodo figlio, ma l'id. Quanto sopra mostrato è per esempio.

Output previsto:. childNode1 (id del primo elemento con classe ChildClass

risposta

25

Siete quasi vicino alla risposta. L'unico cambiamento è invece di chiamare id come metodo, devi chiamarlo come attributo come segue

page.find("#parentNode").first(".childClass")[:id] 
+0

Buona risposta. Voglio solo aggiungere che se vuoi memorizzare l'id in una variabile dovresti fare qualcosa di simile a 'myid =" # "+ page.find (" # parentNode "). First (". ChildClass ") [: id]' –

1

userei alcuni XPath al posto di CSS in questo caso Nota non sono così esperto nel xpathing in modo da uso css primo a trovare parentNode.

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

Provate questo e vedere se funziona.

opzionalmente è possibile utilizzare i CSS nel secondo trovare come bene e utilizzare la classe come criteri in quanto trovare s il primo elemento comunque.

0

Ottenuto la risposta .. !!

Possiamo usare page.evaluate_script per raggiungere questo obiettivo. Ho usato il codice qui sotto

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

Spero che questo vi aiuterà qualcuno :)

Problemi correlati