如何用水豚填充隐藏的字段? [英] How to fill hidden field with Capybara?
问题描述
我已经发现,当我想将值设置为文本字段,文本区域或密码字段时,我可以将ID,名称或标签用作某物
在 fill_in一些东西,:with => some_value
。但是,当我尝试将值设置为< input type = hidden>
字段时,这种方法失败了(我想这样做,因为这些通常是在客户端填充的我分别测试的脚本)。如何使用水豚设置这样的隐藏字段?
I've already found that when I want to set value to text field, text area or password field, I can use id, name or label as something
in fill_in something, :with => some_value
. However such approach fails when I try to set value to <input type="hidden">
field (and I want to do it because those are normally filled client-side scripts which I test separately). How could I set such a hidden field with Capybara? Is it possible?
HTML:
<input id='offer_latitude' name='offer[latitude]' type='hidden'>
<input id='offer_longitude' name='offer[longitude]' type='hidden'>
spec:
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
给出:
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
推荐答案
您需要找到隐藏字段并设置其值。有几种方法,这可能是最简单的
You need to locate the hidden field and set its value. There are a couple ways, this is probably the simplest
find(:xpath, "//input[@id='my_hidden_field_id']").set "my value"
如果您在生产环境中执行client_side脚本,您只需告诉capybara使用与JavaScript兼容的驱动程序即可运行
If you're executing a client_side script in production, you could just tell capybara to run it with a javascript-compliant driver
page.execute_script("$('hidden_field_id').my_function()")
这篇关于如何用水豚填充隐藏的字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!