如何在水豚中单击此按钮

时间:2012-05-16 06:48:17

标签: ruby-on-rails ruby-on-rails-3 testing rspec capybara

请帮我解决这个问题与水豚

我在capybara有一个这样的按钮:

<input type="submit" value="Verify" name="verify" id="verify" class="button">

我试过

click_button "verify"

但它给出了错误:

Failure/Error: find('#verify').click
NoMethodError:
  undefined method `node_name' for nil:NilClass

4 个答案:

答案 0 :(得分:20)

作者回答

问题在于html代码:

<div>
<form>
<div>    
</div>
</div>
  <input type="submit" value="Verify" name="verify" id="verify" class="button">
</form>

由于存在一个冗余</div><input>在表单之外处理,因此capybara会导致这些错误。删除冗余</div>后,一切正常。

答案 1 :(得分:16)

尝试在js: true中添加describe。当您没有包含按钮的表单时会发生这种情况。

答案 2 :(得分:0)

您是否尝试过“加倍”CSS选择器?自从capybara-2.4.3

以来,这一直是我的首选机制
find("#verify").find("[name=verify]").click

除#id-vale之外的任何其他属性都应该起作用,例如

find("#verify").find(".button]").click

答案 3 :(得分:0)

如果你有一个元素的ID,只需使用@ bonzofenix&#39; s方法,但要简单一点:

within 'form' do find('#verify').click end