2017-08-16 58 views
0

我正在试图在系统测试中找到使用水豚的选择标签。我在页面中有几个选择标签,并且当用户正在编辑时,我希望有一些处于只读模式。 我来过其他帖子,但找不到任何有用的东西,虽然我发现这些选择器,如find_field,find_button和find_link。我试图这样做:查找带有水豚的选择标签

assert_equal true,find_select('id')。readonly ?.

这不起作用。有没有办法做到这一点?

+0

的就是你得到确切的错误? –

+0

未定义的方法'find_select' –

回答

0

水豚没有find_select方法,但它确实有一个:select选择类型 - https://github.com/teamcapybara/capybara/blob/2.15.1/lib/capybara/selector.rb#L358

find的第一个参数是选择器类型(默认为:如果忽略CSS),所以你可以做什么你想用

assert_equal true, find(:select, 'id').readonly? 

由于使用非水豚提供的断言它有不使用任何等待/重试行为的缺点。如果元素的状态是动态变化的,这可能导致计时问题和片状测试。如果在您的网页上发生这种情况,最好使用:field选择器类型,该选择器类型提供readonly过滤器 - https://github.com/teamcapybara/capybara/blob/2.15.1/lib/capybara/selector.rb#L88 - 并且还可以匹配选定元素(:select选择器不具有只读过滤器,因为从技术上说,select元素不支持只读 - 见下文)。

assert_selector :field, 'id', type: 'select', readonly: true 

假设你已经加载的水豚规定也可以写成

assert_field 'id', type: 'select', readonly: true 

或与MINITEST断言“:选择”选择断言和过滤块

assert_select('i') { |el| el.readonly? } 

请注意,在HTML中,select方法实际上并不支持readonly属性,所以如果你真正想要的是确保select元素被禁用,那么你会做任何

assert_field 'id', type: 'select', disabled: true 
assert_select 'id', disabled: true