我正在试图在系统测试中找到使用水豚的选择标签。我在页面中有几个选择标签,并且当用户正在编辑时,我希望有一些处于只读模式。 我来过其他帖子,但找不到任何有用的东西,虽然我发现这些选择器,如find_field,find_button和find_link。我试图这样做:查找带有水豚的选择标签
assert_equal true,find_select('id')。readonly ?.
这不起作用。有没有办法做到这一点?
我正在试图在系统测试中找到使用水豚的选择标签。我在页面中有几个选择标签,并且当用户正在编辑时,我希望有一些处于只读模式。 我来过其他帖子,但找不到任何有用的东西,虽然我发现这些选择器,如find_field,find_button和find_link。我试图这样做:查找带有水豚的选择标签
assert_equal true,find_select('id')。readonly ?.
这不起作用。有没有办法做到这一点?
水豚没有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
等
的就是你得到确切的错误? –
未定义的方法'find_select' –