And*_*vis 33 ruby-on-rails capybara
我有一个应用程序启用/禁用按钮以响应UI中发生的事情.
我可以轻松地使用水豚来检测按钮是否存在
should have_button 'save'
Run Code Online (Sandbox Code Playgroud)
但我不知道如何验证保存按钮的状态.那是:
我怎样写一个水豚断言检查按钮的存在和它的启用或禁用状态?
我已经一起检查了一个禁用按钮的检查; 对于启用,我想我可以验证是否有匹配的按钮,并且没有匹配的禁用按钮.但至少可以说,这是笨重的.
这似乎是一个基本的UI检查,我相信我已经错过了一些东西,但我似乎无法弄清楚是什么.
根据gregates的回答跟进:
正如我在评论中提到的,Capybara行为取决于潜在的驱动因素.我们正在使用webkit,它返回"true"/"false"字符串结果.显然,其他驱动程序返回true/false.Capybara的人都知道这个问题(github.com/jnicklas/capybara/issues/705),但他们觉得(可能是正确的)解决它并不是他们的问题.
我没有让我的测试依赖于我正在使用的驱动程序,而是最终创建了一个自定义匹配器:
RSpec::Matchers.define :be_enabled do
match do |actual|
driver_result = actual[:disabled]
# nil, false, or "false" will all satisfy this matcher
(driver_result.nil? || driver_result == false || driver_result == "false").should be_true
end
end
RSpec::Matchers.define :be_disabled do
match do |actual|
driver_result = actual[:disabled]
(driver_result == "disabled" || driver_result == true || driver_result == "true").should be_true
end
end
Run Code Online (Sandbox Code Playgroud)
然后你可以输入:
user_license_area.find_button('Save').should be_disabled
Run Code Online (Sandbox Code Playgroud)
J3R*_*3RN 65
似乎Capybara对残疾人元素的处理已经改变,所以我想我会给出更新.
要测试页面是否有按钮并已启用,请使用:
expect(page).to have_button('Save')
Run Code Online (Sandbox Code Playgroud)
要测试页面是否有按钮并且已禁用,请使用:
expect(page).to have_button('Save', disabled: true)
Run Code Online (Sandbox Code Playgroud)
这种格式能够在has_field?
,find_field
等等.
您可以在http://www.elabs.se/tag/capybara上阅读有关此更新的更多信息
UPDATE
旧链接坏了.这是GitHub的问题,即讨论了功能和这是该方法的不幸贫瘠的文档.
gre*_*tes 14
find_button('save')[:disabled].should eq "disabled"
Run Code Online (Sandbox Code Playgroud)
请注意,一行将有效地测试存在和禁用状态.
编辑:启用,试试
find_button('save')[:disabled].should_not be
Run Code Online (Sandbox Code Playgroud)
(这些测试中的任何一个都可能需要调整,具体取决于您如何禁用/启用按钮.)
归档时间: |
|
查看次数: |
25105 次 |
最近记录: |