4

私は複数の入力を持つ次のhtmlを持っています:

<input type="submit" value="Save and close" name="commit"/>
<input type="submit" value="Save" name="commit"/>

キュウリを使って「保存」ボタンをクリックしてテストしたいと思います。ただし、キュウリのテストでこれを行うと、次のようになります。

When I press "Save"

「保存」ボタンの前に表示されるので、「保存して閉じる」ボタンをクリックします。

ボタンを見つけるためのwebratソースを見てください:

def button_element
  button_elements.detect do |element|
    @value.nil?             ||
    matches_id?(element)    ||
    matches_value?(element) ||
    matches_html?(element)  ||
    matches_alt?(element)
  end
end

...

def matches_value?(element)
  element["value"] =~ /^\W*#{Regexp.escape(@value.to_s)}/i
end

...

webratが最初の一致を取り、コンテンツの最初からのみ一致するようです。

完全に一致させる方法はありますか?キュウリは「保存」を見つけて「保存して閉じる」を無視しますか?

4

1 に答える 1

9

Cucumberが「WhenIpress...」に使用するclick_button()メソッドは、3つのパラメーター(text、name、id)のいずれかを取ります。idまたはname属性を使用してボタンを簡単に区別し、どちらかを指定できます。

<input type="submit" value="Save and close" name="commit" id="close_after_save"/>
<input type="submit" value="Save" name="commit" id="save"/>

次に、次のように言います。

When I press "save"
When I press "close_after_save"

または、div内の各ボタンのスコープを設定することもできます。

<div id="save_and_close">
  <input type="submit" value="Save and close" name="commit"/>
</div>
<div id="save">
  <input type="submit" value="Save" name="commit" id="save"/>
</div>

次に、click_button()メソッドのスコープを設定できます。

When /^I press "([^\"]*)" within "([^\"]*)"$/ do |button,scope_selector|
  within(scope_selector) do      
    click_button(button)
  end
end
于 2010-01-11T19:14:30.890 に答える