我的页面中有此代码
<div>
<label for="user_password">Heslo</label>
<br />
<input id="user_password" name="user[password]" size="30" type="password">
</div>
<div>
<label for="user_password_confirmation">Heslo pro kontrolu</label>
<br>
<input id="user_password_confirmation" name="user[password_confirmation]" size="30" type="password">
</div>
我想在Cucumber中使用这些步骤:
And I fill in "Heslo" with "NeznameHeslo328"
And I fill in "Heslo pro konrolu" with "NeznameHeslo328"
步骤定义很简单:
When /^I fill in "([^"]*)" with "([^"]*)"$/ do |name, text|
fill_in(name, :with => text)
end
BUT Capybara提出模糊匹配,发现2个元素匹配字段“Heslo”(Capybara :: Ambiguous) 第一步。
当我将标签中的名称更改为for="user_password_confirmation"
至“ Hesla pro kontrolu ”时(相应的第二步),一切正常。
有没有办法强制Capybara匹配标签中的确切短语?在场景中不使用css选择器。
答案 0 :(得分:2)
<强>更新强>
在Capybara 2.1 you can use :exact
option:
fill_in(name, with: 'Heslo', exact: true)
此选项默认设置为false
在以前版本的Capybara中,不可能进行精确的字符串匹配。所有匹配都使用子串完成。您只能使用其他选择器类型。
答案 1 :(得分:0)
这是我开始使用的。到目前为止,它对我有用:
Given /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field_name, text|
page.find(field_name).set "#{text}"
end