2013-01-02 13 views
20

Ho un modulo con un campo nascosto che contiene la data corrente.Valore di test Capibara del campo nascosto

Sto cercando di capire come scrivere un cercatore capibara a:

  1. Verificare che il campo è là
  2. controllare il valore del campo

Questo è possibile con Capybara?

risposta

2

suo semplice è possibile farlo utilizzando find_by_css oppure utilizzando XPath come seguire

page.find_by_css('#foo .bar a') #foo is the id the foo has .bar class 
page.find('/table/tbody/tr[3]') #path of the element we want to find 
+6

Grazie, ho finito con il seguente 'elem = page.find_by_id ('my_element_id'); elem.value.should eq Date.today.to_s' –

+1

Ho anche usato ['find_by_id'] (http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders:find_by_id):' assert_equal photo .updated_at.to_datetime.to_s, page.find_by_id ('hidden_field_photo_updated_at'). value.to_datetime.to_s' – user664833

41

solo fare questo:

find("#id_of_hidden_input", :visible => false).value 
+6

'visible: false' è la parte chiave qui. Grazie! – LouieGeetoo

+0

Questo è solo per trovare l'elemento, questo post parla di come testarlo contro: http://stackoverflow.com/questions/15066884/how-to-get-the-hidden-element-value-in-capybara – Dean

4

Si potrebbe inoltre incaricare Capybara di non ignorare gli elementi nascosti a livello globale nella vostra spec_helper.rb o equivalente. Il comportamento predefinito può essere sovrascritto:

# default behavior for hidden elements 
# Capybara.ignore_hidden_elements = false 

# find all elements (hidden or visible) 
page.all(".articles .article[id='foo']") 

# find visible elements only (overwrite the standard behavior just for this query) 
page.all(".articles .article[id='foo']", :visible => true) 


# changing the default behavior (e.g. in your features/support/env.rb file) 
Capybara.ignore_hidden_elements = true 

# now the query just finds visible nodes by default 
page.all(".articles .article[id='foo']") 

# but you can change the default behaviour by passing the :visible option again 
page.all(".articles .article[id='foo']", :visible => false) 

esempi tratti da this article.

Problemi correlati