我正在尝试用黄瓜/水豚测试模态形式。 在页面渲染后加载模态。 但是找不到输入文本。
这是我的源代码。
视图正在渲染模态
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" data-backdrop="static" style="width:600px; padding:30px">Loading...</div>
<script type="text/javascript">
$(document).ready(function() {
$('#myModal').modal('show');
$('#myModal').html("<%= j render("form")%>");
});
</script>
模态仅包含输入文本
<input id="project_title" name="project[title]" type="text" value="">
测试是这样的(我在评论中尝试了不同的方法)
# find(:css, "#project_title").set value
# within("#myModal") do
# find(:css, "#project_title", visible: false).set value
# end
# sleep 3
find(:css, "#project_title", visible: false).set value
错误无法找到css“#project_title”(Capybara :: ElementNotFound) 我试图将输入文本放在div中来测试选择器,它运行良好。因此,模态形式确实存在问题。
感谢您的帮助。
埃里克
答案 0 :(得分:0)
在文档准备好后触发模态可能需要一些时间。为了增加机会,您可以延长默认等待时间(默认为2秒)。
Capybara.default_wait_time = 10
希望得到这个帮助。
答案 1 :(得分:0)
您正在设置Capybara以搜索隐藏元素,但该元素在模态上可见。
within("#myModal") do
find(:css, "#project_title").set value
end
或者:
find("#myModal").find("#project_title").set value