zlo*_*log 4 regex ruby-on-rails webrat cucumber
我有以下带有多个输入的html:
<input type="submit" value="Save and close" name="commit"/>
<input type="submit" value="Save" name="commit"/>
Run Code Online (Sandbox Code Playgroud)
并且想用黄瓜测试点击"保存"按钮.但是,当我在黄瓜测试中这样做时:
When I press "Save"
Run Code Online (Sandbox Code Playgroud)
它点击"保存并关闭"按钮,因为它出现在"保存"按钮之前.
查看用于查找按钮的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
...
Run Code Online (Sandbox Code Playgroud)
似乎webrat接受第一场比赛,并且只从内容的开头匹配.
有没有办法完全匹配,所以黄瓜找到"保存"并忽略"保存并关闭"?
click_utton()方法,Cucumber用于"当我按..."时,它采用三个参数之一(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"/>
Run Code Online (Sandbox Code Playgroud)
然后说:
When I press "save"
When I press "close_after_save"
Run Code Online (Sandbox Code Playgroud)
或者,您可以在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>
Run Code Online (Sandbox Code Playgroud)
然后你可以使用click_button()方法的范围:
When /^I press "([^\"]*)" within "([^\"]*)"$/ do |button,scope_selector|
within(scope_selector) do
click_button(button)
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12022 次 |
| 最近记录: |