使用水豚时,是什么原因导致无法单击不在表单中的按钮?

时间:2014-09-09 11:56:23

标签: ruby-on-rails rspec capybara

我已经搜索了这个在SO和Google上的好时光。我是一个新手(只有7个月的开发时间),但我想解释一下为什么水豚的click_button不响应不在形式的按钮

以此为例

<div id="btn-div">
  <%= button_tag('Attach new file', id: "attach-file-btn", class: "btn btn-info") %>
</div>

在这种情况下,当您编写测试时,会出现类型错误

undefined method `node_name' for nil:NilClass

然而,当你把它放在这样的form时,它可以正常工作

<form id="btn-form">
  <%= button_tag('Attach new file', id: "attach-file-btn", class: "btn btn-info") %>
</form>

如果可以,请提供解释为何会发生这种情况。

并考虑以下因素

  1. 该按钮未提交任何内容,只会导致JavaScript显示表单
  2. 当我尝试使用xpathfind找到该按钮时,它可用,但是click_button不起作用
  3. 更新

    点击按钮的代码与此类似:

    describe "Getting to the deployable tools page" do
    
      before do       
        @tool = FactoryGirl.create(:tool)
        @tool.set_status(1)
      end
    
      before { visit assigned_tools_path }
      before { click_button('attach-file-btn') }          
    
      it { should have_content('select tools to add') }
      it { should have_css('#non-successful-tool-adding') }
    end
    

2 个答案:

答案 0 :(得分:2)

尝试使用水豚探测器,然后调用点击它,如下所示:

page.find('#attach-file-btn').click

答案 1 :(得分:0)

如果您只想在带有文字Attach new file的浏览器上点击文件节目,请使用:

click_button 'Attach new file'