如何填写隐藏字段与水豚?(How to fill hidden field with Capybar

2019-06-24 23:09发布

我已经发现,当我想设置值的文本字段,文本区域或密码字段,我可以用ID,名称或标签作为somethingfill_in something, :with => some_value 。 然而,当我尝试值设置为这样的方法未能<input type="hidden">字段(我想这样做,因为这些通常填充我分别测试客户端脚本)。 我怎么能设置成隐藏字段与水豚? 可能吗?

HTML:

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

规格:

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

Answer 1:

你需要找到隐藏字段,并将其值。 有一对夫妇的方式,这可能是最简单的

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

如果你正在执行在生产中client_side脚本,你能告诉豚与兼容JavaScript的驱动程序运行

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


Answer 2:

有许多方法来达到同样的效果。 一个我最喜欢的是:

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


Answer 3:

如果你使用的骚灵/ phantomjs作为一名司机和jQuery是不工作的你,总是有良好的老式JS:

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


文章来源: How to fill hidden field with Capybara?