2013-02-25 9 views
8

Ho bisogno di ottenere il valore di un elemento nascosto.Come ottenere il valore dell'elemento nascosto in capibara?

ho provato il seguente codice:

page.find(:xpath, "//span[@id='sample']").text 

restituisce zero.

+0

Si prega di mostrare il codice HTML della pagina. –

+0

@JustinKo Non è necessario conoscere tutto il codice HTML –

+0

@AndreyBotalov, volevo solo confermare se stiamo osservando una span che non è visibile o un elemento di input di tipo 'hidden'. Ci sono state confusioni su questo prima in altre domande. –

risposta

20

Da Capybara 2.1 è possibile passare :all a text e utilizzare find('#sample').text(:all) indipendentemente dal driver.

Inoltre è possibile utilizzare :text possibilità di matchers (saranno internamente passare :all-text se :visible è false):

page.should have_css('#sample', visible: false, text: 'expected text') 

Nel vecchio Capybara 2.0.x text non hanno avuto tale opzione e restituito solo il testo visibile.

Per tornare sia visibile e non il testo visibile è possibile utilizzare in:

  • selenio:
page.evaluate_script("document.getElementById('sample').textContent") 
  • rack_test:
find('#sample').native.text 
+0

Documenti: http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders –

+0

Questo non funziona per il nuovo Capybara – Dean

+0

@Dean Penso che dovrebbe funzionare. Ho appena dato per scontato che OP voglia ottenere testo, non valore. –

15

Si può semplicemente trova l'elemento nascosto e ottieni il suo valore.

find('#sample', visible: false).value 

Così semplice;)

Problemi correlati