tutorial rails rack_test feature example rspec capybara

rspec - rails - ¿Cómo llenar el campo oculto con Capibara?



rspec rails (3)

Hay muchas formas de lograr el mismo resultado. El que más me gusta es:

first(''input#id.class'', visible: false).set("your value")

Ya he encontrado que cuando quiero establecer el valor en el campo de texto, área de texto o campo de contraseña, puedo usar id, name o label como something en fill_in something, :with => some_value . Sin embargo, dicho enfoque falla cuando trato de establecer el valor en el campo <input type="hidden"> (y quiero hacerlo porque normalmente son scripts rellenos del lado del cliente que pruebo por separado). ¿Cómo podría establecer un campo oculto con Capibara? ¿Es posible?

HTML:

<input id=''offer_latitude'' name=''offer[latitude]'' type=''hidden''> <input id=''offer_longitude'' name=''offer[longitude]'' type=''hidden''>

especulación:

describe "posting new offer" do it "should add new offer" do visit ''/offer/new'' fill_in ''offer[latitude]'', :with => ''11.11'' fill_in ''offer[longitude]'', :with => ''12.12'' click_on ''add'' end end

da:

1) posting new offer should add new offer Failure/Error: fill_in ''offer[latitude]'', :with => ''11.11'' Capybara::ElementNotFound: cannot fill in, no text field, text area or password field with id, name, or label ''offer[latitude]'' found


Necesita ubicar el campo oculto y establecer su valor. Hay un par de formas, esta es probablemente la más simple

find(:xpath, "//input[@id=''my_hidden_field_id'']").set "my value"

Si está ejecutando un script client_side en producción, podría decirle a capybara que lo ejecute con un controlador compatible con JavaScript

page.execute_script("$(''hidden_field_id'').my_function()")


Si está utilizando poltergeist / phantomjs como controlador y jquery no funciona para usted, siempre hay buenos js anticuados:

page.execute_script("document.getElementById(''#some-id'').value = ''some-value''");