1

「その他」オプションのある複数のチェックボックスフィールドを持つフォームでカピバラを使用しています。Capybara API は私たちに

page.check('Other')

しかし、スコープを特定のフィールドに制限する方法はありません(私が見つけることができます)。CSS (または XPath) セレクターに基づいてスコープを制限できますが、意味のあるものが存在しないため、カピバラに対応するためだけにページの (醜いレガシー) マークアップを変更する必要がありますが、これは間違った解決策のようです。(完璧な世界では、マークアップを完全にリファクタリングする時間があり、カピバラのスコープを選択する方法も提供する意味的に賢明なものが完成しますが、これは完璧な世界ではなく、私は望んでいませんカピバラを収容するすべての場所で授業に参加するだけです。)

これ

page.within('[name=FieldName]') do
  page.check('Other')
end

カピバラはスコープとして使用できる単一の親ノードを探しており、これにより一連のチェックボックスが提供されるため、これも機能しません。(カピバラがそれをサポートしていればいいのですが、そうではありません。) 検索するためにカードのデッキを渡しているようなもので、カピバラはカードが入るボックスを望んでいますが、ボックスがありません.

このようなことができるようになりたいです

page.check('Other', :in => 'FieldName')

しかし、とにかくそれを行う方法が見つかりません。私が知る限り、渡すことができる唯一のオプションは、、、textおよびvisibleですexact。何か不足していますか?い回避策に頼らずにこれを行う方法はありますか?

4

2 に答える 2

1

チェックボックスを見つけることができる css-selector があるので、findメソッドを使用してチェックボックスを見つけることができます。

page.find(:css, '[name=FieldName][value=Other]')

次に、チェックボックスをオンにするには、次を使用しますsetcheckメソッドで使用されます):

page.find(:css, '[name=FieldName][value=Other]').set(true)

click次の方法も使用できます。

page.find(:css, '[name=FieldName][value=Other]').click
于 2013-07-11T22:31:14.890 に答える
0

これは最も洗練された解決策ではありませんが、(これまでのところ) 誰もより良い解決策を投稿していないため、ここに私が思いついた最善の解決策を示します。

スクリプトを実行するだけで、必要なことを実行できます。私の場合、jQueryを使用しています:

page.execute_script('$("[name=FieldName][value=Other]").trigger("click");')
于 2013-07-11T21:26:50.177 に答える