使用 Capybara 在不可见元素中附加文件
attach file in invisible elements with Capybara
我从 capybara
、cucumber
和 webdriver
开始,我的任务是测试图像字段的上传。
所以我模拟了一个我可以学习的运输环境,它工作正常,但是我需要将元素“隐藏”,我不知道有没有水豚的方法select它。
所以我的代码朝这个方向发展:
HTML
<input type="file" name="attach-file" style="display: none;">
Capybara/Cucumber
addMedicine_page.attach_file('attach-file', 'assets/asset.jpg')
但是它会导致 Unable to find visible file field "attach-file" message that is not disabled (Capybara :: ElementNotFound)
如果您要制作文件输入元素 non-visible,您必须有一些可见元素可供用户使用,与之交互将触发文件输入文件选择。在这种情况下,最好的解决方案是使用 attach_file
的块接受
page.attach_file('assets/asset.jpg') do
# perform whatever action the user would to trigger the file selection
click_button 'Upload file'
end
如果你不能为你工作,你真的应该能够并且它最接近地复制用户行为因此使测试最有效,那么你可以使用 make_visible
选项
page.attach_file('attach-file', 'assets/asset.jpg', make_visible: true)
这将暂时使文件输入可见,将文件附加到它,然后 re-hide 它。如果您的页面 make_visible
应用的标准 CSS 无法使输入可见,您可以将 CSS 值的散列设置为使用而不是 true
见https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Actions#attach_file-instance_method
我从 capybara
、cucumber
和 webdriver
开始,我的任务是测试图像字段的上传。
所以我模拟了一个我可以学习的运输环境,它工作正常,但是我需要将元素“隐藏”,我不知道有没有水豚的方法select它。
所以我的代码朝这个方向发展:
HTML
<input type="file" name="attach-file" style="display: none;">
Capybara/Cucumber
addMedicine_page.attach_file('attach-file', 'assets/asset.jpg')
但是它会导致 Unable to find visible file field "attach-file" message that is not disabled (Capybara :: ElementNotFound)
如果您要制作文件输入元素 non-visible,您必须有一些可见元素可供用户使用,与之交互将触发文件输入文件选择。在这种情况下,最好的解决方案是使用 attach_file
page.attach_file('assets/asset.jpg') do
# perform whatever action the user would to trigger the file selection
click_button 'Upload file'
end
如果你不能为你工作,你真的应该能够并且它最接近地复制用户行为因此使测试最有效,那么你可以使用 make_visible
选项
page.attach_file('attach-file', 'assets/asset.jpg', make_visible: true)
这将暂时使文件输入可见,将文件附加到它,然后 re-hide 它。如果您的页面 make_visible
应用的标准 CSS 无法使输入可见,您可以将 CSS 值的散列设置为使用而不是 true
见https://www.rubydoc.info/github/jnicklas/capybara/Capybara/Node/Actions#attach_file-instance_method