假设我有以下代码的倍数(每个代码具有不同的表单名称,productForm_1,.._ 2 ... _等等):
<form id="productForm_7" name="productForm_3" method="post" action="/send/coded.cfm" style="width:110px; display:inline;">
<div>
<input type="hidden" value="24775643" name="productID">
<input class="btn_addToCart" type="submit" value=" " style="cursor:pointer;">
</div>
</form>
如何更改capybara-webkit中的productID? 由于按钮没有名称/值,我该如何指定按钮?
我试过
page.find_field('productForm_7').find_field("productID").value
但这似乎根本不起作用。
*对不起,我是capybara / nokogiri的新手
答案 0 :(得分:0)
您的代码存在一些问题:
find_field
发现字段不是表单。你的第一个发现是错的,但你的第二个是正确的。请尝试:page.find('#productForm_7').find_field("productID").value
。 Capybaras通用查找方法默认使用CSS选择器。以同样的方式,您可以使用按钮的CSS类找到按钮page.find('#productForm_7').find(".btn_addToCart").value
。然而,更多的水豚风格是这样的:
within '#productForm_7' do
# fill in values.... for example fill_in '#productID', :with => '123456'
find('.btn_addToCart').click
end
答案 1 :(得分:0)
一种简单的方法,让你做你想做的事:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<form id="productForm_7" name="productForm_3" method="post" action="/send/coded.cfm" style="width:110px; display:inline;">
<div>
<input type="hidden" value="24775643" name="productID">
<input class="btn_addToCart" type="submit" value=" " style="cursor:pointer;">
</div>
</form>
EOT
doc.search('form').select{ |form| form['id'][/productForm_\d+/] }.each do |form|
hidden_input = form.at('input[name="productID"]')
hidden_input['value'] = (hidden_input['value'].to_i + 1).to_s
button = form.at('input.btn_addToCart')
# do something with button...
end