ユーザが私が持っているWebページをスクロールダウンすると、クラスがnavタグに追加され、ページの位置が変更されます。ユーザーが上にスクロールバックすると、クラスが削除され、元の位置に戻ります。私はこの機能が動作していることを知っています。私はこの機能をテストするためにRspecテストを書こうとしています。私は成功せずにカピバラを使用しようとしてきました。テストのスクロール部分は動作しますが、追加されたクラスのHTMLとCSSを検索することはできません。クラスがRspecのnavタグに追加されているかどうかをテストする方法
nav idは "views"であり、追加されるクラスは "on_nav"です。これは、これまでのテストです:
scenario 'Scroll down' do
visit '/'
page.execute_script "window.scrollBy(0,1000)"
expect(page.html).to include('class="on_nav"')
end
エラーメッセージは、私は、ブラウザ内の要素を検査するとき、私はそれを見ることができるにもかかわらず、ページ上の「「クラス= on_nav」は見つけることができないということですこれらは。私が試したさまざまなランダムコマンドのうちのいくつかは、Googleでこれを試してみたときに私がオンラインで見た答えから、私には同じエラーが出る、あるいは私の構文が間違っていると私はそれを修正する方法を見つけることができないと言う:
expect(page.html).to have_selector("#on_nav")
expect(page).to have_css("nav#views.on_nav")
expect(page.has_css?(".on_nav")).to eq(true)
私は、Webテストを書くには完全に新しいですが、私はオンライン私が見つけた答えを知っている(CSSとthis articleをチェック例えば約this questionためアボカピバラとのテスト要素)は私のために働いていません。私はnavタグをテストしようとしているので問題が起こっている可能性があります。それも可能ですか?
私は実際にSeleniumを使用していますので、ドライバを一時停止するためにscrollByの後に 'binding.pry'を追加しました。クラスを正しく追加/削除していますが、変更する要素のscrollByの後、なぜなら私はテストを再開した後に成功するからです。しかし、 'binding.pry'で一時停止せずに、Capybara.default.max_wait_timeをかなり高く設定しても失敗します(30回試しました)。私はそのオンラインへの答えを見つけることができませんでした、私はそれが私のオリジナルに関連していない場合は別の質問としてそれを求めることができます。 – kziegler
@ ziegl107私の答えで述べたように、もしあなたがまだ 'page.html'を期待しているのであれば、それは完全にカピバラを倒すでしょう。default_max_wait_time(あなたのCapybara.default.max_wait_timeはタイプミスであると仮定します)。 –