3

我的页面中有此代码

  <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  

但是 Capybara 提出了模糊匹配,第一步找到了 2 个匹配字段“Heslo”(Capybara::Ambiguous) 的元素。

当我将标签中的名称更改for="user_password_confirmation"为“ Hesla pro kontrolu ”(以及相应的第二步)时,一切正常。

有什么方法可以强制 Capybara 匹配标签中的确切短语?在场景中不使用 css 选择器。

4

2 回答 2

2

更新

在 Capybara 2.1中,您可以使用:exact选项

fill_in(name, with: 'Heslo', exact: true)

此选项false默认设置为


在 Capybara 的早期版本中,不可能进行精确的字符串匹配。所有匹配都是使用子字符串完成的。您只能使用其他选择器类型。

于 2013-01-13T20:48:17.000 回答
0

这是我开始使用的。到目前为止它对我有用:

Given /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field_name, text|
  page.find(field_name).set "#{text}"
end
于 2013-01-16T21:16:26.900 回答