【发布时间】:2013-05-13 18:23:21
【问题描述】:
我正在使用 Capybara 编写一些功能测试,用于涉及大量 javascript 刷新的页面(当用户单击“继续”按钮时,url 将保持不变,但会显示隐藏的内容,显示的内容将是隐藏,因此在页面“上”的任何给定点都有大量的文本/选择器/等,但对用户隐藏)。
为了测试这个功能,我希望 Capybara 的 ignore_hidden_elements 配置选项为真,因为这最能代表用户体验。
但是页面上也有一些 jQuery 插件使用精美的图形来填充隐藏的基本 HTML 元素,我想使用 Capybara 为这些元素选择正确的值,而不是尝试使用 Javascript手动模拟用户与元素的交互。
特别是,我正在尝试测试设置为 display:none 并在用户与其交互时由 jQuery 插件填充的选择框。我希望能够做到这一点:
select('value', from: 'select_box')
但是选择框是隐藏的。
所以我尝试了这个:
select('value', from: 'select_box', visible: false)
但这也没有用。我不愿意将 ignore_hidden_elements 设置为 false,因为这对用户的模拟效果更差,我必须返回并在许多测试行中添加“可见:真”。
知道怎么做吗?有没有更巧妙地取消ignore_hidden_elements的选项?
编辑 -- 根据 Andrey 的回复,我将 ignore_hidden_elements 设置为 false,然后进行与之前相同的 capybara select 测试:
select 'value', from: 'select_box_id'
而且,就像魔术一样,它奏效了。当我再次将 ignore_hidden_elements 更改为 true 并尝试此行时:
select 'value', from: 'select_box_id', visible: false
我收到此错误:
Failure/Error: select 'value', from: 'select_box_id', visible: false
Capybara::ElementNotFound:
Unable to find select box "select_box_id"
这不是一个错误的可能性吗?我应该举报吗?
【问题讨论】:
-
如果
select('value', from: 'select_box', visible: false)不起作用,那么select('value', from: 'select_box')和Capybara.ignore_hidden_elements = false也不起作用。如果它有效,它应该被认为是 Capybara 中的一个错误。ignore_hidden_elements和visible选项影响同一个参数 -
那么我认为这是一个错误。详情见上。
-
你的水豚版本是什么?
-
水豚 2.0.2,水豚 webkit 0.14.2。我没有指定版本,所以它应该是最新的,不是吗?
标签: ruby-on-rails ruby-on-rails-3 rspec capybara