私はカピバラを使用していくつかの機能テストを書いています。多くの JavaScript 更新を伴うページ (ユーザーが「続行」ボタンをクリックしても URL は同じままですが、非表示のコンテンツが表示され、表示されたコンテンツは非表示になるため、ページの「上の」任意の時点に膨大な量のテキスト/セレクター/などがあるが、ユーザーからは隠されていること)。
この機能をテストするには、Capybara の ignore_hidden_elements 構成オプションを true に設定します。これがユーザー エクスペリエンスを最もよく表しているからです。
しかし、ページには、ファンシーなグラフィックを使用して非表示の基本的な HTML 要素を埋める jQuery プラグインもいくつかあります。Javascript を使用して手動でシミュレートするのではなく、Capybara を使用してそれらの要素の正しい値を選択したいと思います。要素と対話するユーザー。
特に、display:none に設定されていて、ユーザーが操作したときに jQuery プラグインによって埋められる Select ボックスをテストしようとしています。これができるようになりたいです:
select('value', from: 'select_box')
ただし、選択ボックスは非表示になっています。
だから私はこれを試しました:
select('value', from: 'select_box', visible: false)
しかし、それもうまくいきませんでした。ignore_hidden_elements を false に変更するのは嫌です。これは、ユーザーのシミュレートが不十分になるためです。戻って、多くのテスト行に「visible: true」を追加する必要があります。
これを行う方法はありますか?ignore_hidden_elements をよりきれいにキャンセルするオプションはありますか?
編集- Andrey の応答に従って、ignore_hidden_elements を false に変更し、以前と同じカピバラ選択テストを実行しました。
select 'value', from: 'select_box_id'
そして、魔法のようにうまくいきました。ignore_hidden_elements を true に再度変更して、次の行を試してみると:
select 'value', from: 'select_box_id', visible: false
次のエラーが表示されます。
Failure/Error: select 'value', from: 'select_box_id', visible: false
Capybara::ElementNotFound:
Unable to find select box "select_box_id"
これはバグではない可能性はありますか?私はそれを報告する必要がありますか?