请帮我解决这个问题与水豚
我在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
答案 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