web-dev-qa-db-ja.com

カピバラでこのボタンをクリックするにはどうすればよいですか

カピバラでこの問題を解決するのを手伝ってください

私はカピバラにこのようなボタンを持っています:

<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
18
jwall

作者による回答

問題はhtmlコードの中にあります:

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

冗長な</div>が1つあるため、<input>はフォームの外部で処理され、capybaraがこれらのエラーを引き起こします。冗長な</div>を削除すると、すべて正常に機能します。

21
Mark Huk

describejs: trueを追加してみてください。これは、ボタンを含むフォームがない場合に発生します。

16
bonzofenix

CSSセレクターを「2倍」にしてみましたか?これはcapybara-2.4.3以来の私の頼りになるメカニズムです

find("#verify").find("[name=verify]").click

#id-valeに加えて、他の属性でうまくいくはずです。

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

要素のIDがある場合は、@ bonzofenixのアプローチを使用しますが、もう少し簡単にします。

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

0
taystack