我正在使用Cucumber和Capybara测试一个RoR应用程序,并使用capybara-webkit作为我的javascript驱动程序。我在客户端使用jQuery。
我不想使用浏览器生成的默认文件选择器。这是我的javascript代码:
$(document).ready( function() {
$('#upload_button').click( function() {
$('#upload_file').click();
});
$('#upload_file').on( 'change', function () {
$(this).parents('form:first').submit();
});
});
这是我的标记(编辑以强调我的问题):
<form action="/guests/upload_list" enctype="multipart/form-data" method="post">
<input class="invisible" id="upload_file" name="upload_file" type="file">
<button id="upload_button" name="button" type="button">Upload guest list...</button>
</form>
我可以通过Capybara测试我的文件上传工作,但我还需要测试我的'假'按钮是否有效。一个想法是使用Capybara点击假按钮并检查文件对话框是否出现,但我不知道如何做后者。
测试这个有什么好的策略?我已经看过poltergeist作为一个可能的驱动程序解决方案但是仍然不清楚如何测试以确定这实际上是有效的。我也把Jasmine视为一个javascript测试框架,但理想情况下我希望我当前的系统能够工作(即使用Cucumber,Capybara等)。
答案 0 :(得分:0)
您可以尝试一些
的变体但我不确定selenium webdriver截图是否为操作系统级别,并显示选择器或浏览器级别,只显示该页面。
其他类似sikuli的内容可让您使用屏幕截图编写脚本,这可能是一种选择。 Sikuli使用Python,虽然我看到了一个名为sikuli的宝石,但我不知道它处于什么状态。
您确定要测试浏览器&lt; - &gt;像这样的OS交互。或者你只是想确保在文件类型的隐藏输入元素上触发click事件将生成一个文件选择器。它没有任何HTML规范定义。某些浏览器操作系统组合甚至可能无法启动选择器。
如果您得出结论,测试浏览器操作系统的交互超出了您的应用程序的范围,并且属于&#34;测试系统&#34; - 类似于测试String-,然后测试button.click使用Jasmine点击输入上的点击就足够了。
答案 1 :(得分:0)
当对话框打开时,是否有新的div或显示的内容?你可以通过一个页面声明那个css就在那里。应该是have_css('div.fake-popup')