1. ホーム
  2. ruby-on-rails

[解決済み] Capybaraで親ノードを取得する方法は?

2023-01-27 07:23:32

質問

私は多くのjQueryプラグインで作業しています。それはしばしばidまたは他の識別プロパティなしでDOM要素を作成し、Capybaraでそれらを取得する唯一の方法は(例えばクリックのために) - 最初にその隣人(その祖先の別の子)を取得することです。しかし、Capybaraがそのようなことをサポートしているかどうか、私はどこにも見つけられませんでした。

find('#some_button').parent.fill_in "Name:", :with => name

?

どのように解決するのですか?

jamuraaさんの回答はとても参考になりましたが、私の場合、完全なxpathにすると文字列の悪夢が待っていましたので、Capybaraのfindを連結する機能を利用して、cssとxpathの選択を混在させることができるようにしました。すると、あなたの例は次のようになります。

find('#some_button').find(:xpath,".//..").fill_in "Name:", :with => name

カピバラさん2.0アップデート : find(:xpath,".//..") は、ほとんどの場合 Ambiguous match エラーになります。その場合は first(:xpath,".//..") を代わりに使ってください。