在模态popin中填写输入文本

时间:2014-09-23 09:40:18

标签: ruby-on-rails cucumber capybara

我正在尝试用黄瓜/水豚测试模态形式。 在页面渲染后加载模态。 但是找不到输入文本。

这是我的源代码。

  1. 视图正在渲染模态

    <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>
    
  2. 模态仅包含输入文本

    <input id="project_title" name="project[title]" type="text" value="">
    
  3. 测试是这样的(我在评论中尝试了不同的方法)

    # 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
    
  4. 错误无法找到css“#project_title”(Capybara :: ElementNotFound) 我试图将输入文本放在div中来测试选择器,它运行良好。因此,模态形式确实存在问题。

    感谢您的帮助。

    埃里克

2 个答案:

答案 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