5

私はカピバラを使用していくつかの機能テストを書いています。多くの 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"

これはバグではない可能性はありますか?私はそれを報告する必要がありますか?

4

1 に答える 1

1

これは Capybara 2.0.x のバグです。2.0.x では再現可能ですが、2.1 では再現できないテスト ケースを次に示します。

しかし、Capybara-Webkit のメンテナーはまだ Capybara 2.1 互換バージョンをリリースしていません。

考えられる解決策:

  • Capybara 2.1 互換のドライバーを使用する
  • github の master ブランチから Capybara-Webkit を使用する
  • 目に見えない要素とやり取りしようとしないでください (Selenium では機能しないため、やり取りの可能性は Capybara-Webkit のバグと見なす必要があると思います)
于 2013-05-13T21:08:33.630 に答える