我正在使用 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的选项?
编辑——在安德烈的回应之后,我把 ignore_hidden_elements 变成了假,然后像以前一样做了同样的水豚选择测试:
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"
有可能这不是错误吗?我应该报告吗?