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  

しかし、カピバラはあいまいな一致を発生させ 、最初のステップでフィールド "Heslo" (Capybara::Ambiguous) に一致する 2 つの要素を見つけました。

ラベルの名前for="user_password_confirmation"を「Hesla pro kontrolu」に変更すると(それに応じて2番目のステップ)、すべて問題ありません。

カピバラにラベル内の正確なフレーズを一致させる方法はありますか? シナリオで 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 に答える