2016-12-07 3 views
0

私はcapybaraを使ってRSpec機能テストを作成しています。これはBootstrapタブを使ったテストです。Capybaraがユーザーに見えない要素を見つけようとしています

私の問題は、使用しなくてもclick_link "tab name" capybaraは、そのタブ内に配置されている要素を見つけることができるということです。しかし、ローカルサーバーのページを見ると、タブが正しく機能しています。

カピバラはどのように要素を正確に見つけますか?それはどういうわけか、ブートストラップされたタブをバイパスするシステムを使用していますか?

これを修正する方法はありますか?関与

可能性のある要因:様々な理由

  • 、私が働いているプロジェクトでは、これらの「リクエスト」のテストではなく、機能テストを呼んでいます。これはカピバラの行動のいくつかを変えることができますか?

更新: - 私は現在js: true設定されていません。今すぐ可能な解決策を見てください。

+1

(コメントを参照してください)@ThomasWalpoleに行きます。そのドライバーはほとんどのCSSを処理しません.JSのサポートがないため、ブートストラップタブは全く機能しません。 –

+1

そして、はい - Capybaraを使用する場合、特に 'request'仕様ではなく 'feature'仕様にする必要がありますあなたは通常の 'require 'capybara/rspec'を使っています - それをフィーチャーテストとすると、同時に' capybara'を使うのに互換性のない 'get' /' 'post'/etcメソッドを使用できなくなります。 –

+0

@Thomasウォールポール、ありがとう、これは役に立ちます。プロジェクトのリーダーは、しかし私が可能な限り多くを残してほしいと思っています。フィーチャの仕様に変更することは絶対に必要ですか、それともそれを強く推奨していますか?フィーチャー・スペックではなくリクエスト・スペックを使用するときに実際に何が分裂し始めるのかを知っていますか? – RyanQuey

答えて

0

この動作の理由は次のとおりです。jsがfalseに設定されているため、capybaraがデフォルトでラックベースのドライバを使用していました。このドライバはほとんどのCSSを処理せず、CSSとJavaScriptをサポートしないため、ブートストラップタブは機能しません。従って、各タブは、タブリンクがクリックされたか否かにかかわらず、基本的には同時に見ることができ、同時に選択可能である。これはまだそれらのリンクをクリックすることが可能であったが、何もしなかったことを意味した。あなたは、あなたがデフォルトのラックテストドライバーを使用していると思いますJSが可能なドライバを使用していない場合は

クレジットは

関連する問題