2013-07-12 38 views
7

いつか先月(2013年6月)、カピバラのテストのいくつかは主に、クリックしようとしているボタンが表示されていないため失敗し始めました。理想的には、何が変わったのか把握したいと思います。私たちは現在selenium-webdriver 2.33を利用していますが、私は2.29に戻ってみましたが、まだ動作しません。私たちは現時点でのみFirefoxに対抗しているし、おそらくそれは新しいバージョンのFirefoxによると思われる。CapybaraとSeleniumでボタンを表示するように自動スクロール

これを除いて、ボタンを表示する方法を理解できません。私が集めたものから、私はscrollIntoViewを使うことができますが、カピバラのステップでそれを呼び出す方法はわかりません。私はバリエーションを試しました:

Capybara.current_session.driver.execute_script("arguments[0].scrollIntoView(true;)", find_button(button).native) 

find_button自体は動作しません。

注:ボタンのテキストに基づいて選択しています。 IDに基づいて選択することは可能ですが、私たちのUIテストには多くの変更が必要となりますので、避けたいものです。

+0

もう1つの注意:ボタンはスクロール可能なdivにあります。ページ自体はスクロールしません。 –

+0

Firefoxのどのバージョン? Firefoxをアンインストールして特定のバージョンのFirefoxをインストールしてから、アップグレードを無効にして、期待どおりのバージョンになるようにしてください。 – djangofan

答えて

0

です。ページがスクロールできないため、他の回答で提供されているリンクされた回答と同じ手法を使用できますが、スクロール可能な要素をターゲットにするように変形しています。たとえば、あなたのスクロール可能な要素は、「スクロール」のIDを持っている場合、:

page.execute_script "document.getElementById("scrollable").scrollTop += 100" 

私は個人的にテストのためにスクロールする必要が嫌いなので、誰でもカピバラ+セレンのためにこれに対するより良い解決策を思い付く場合、私は思いますそれを見るのが大好きです。

18

私は通常、私はテストにSeleniumの機能を含めるために使用するモジュールJavascriptDriverを持っており、そこに私はヘルパーメソッド定義:

module JavascriptDriver 
    # other code that prepares capybara to work with selenium 

    def scroll_to(element) 
    script = <<-JS 
     arguments[0].scrollIntoView(true); 
    JS 

    Capybara.current_session.driver.browser.execute_script(script, element.native) 
    end 
end 

をしてからテストであなたは、通常のを渡すことによって、そのコードを利用することができますカピバラ要素:

scroll_to(page.find("button.some-class", visible: false)) 
+0

私のために動作しません... –

+0

@CJohnson: 'visible:false'オプションを試してください。私の答えを更新しました。 –

+0

おかげで、あなたは本当に私の人生を救った!ところで、これも水平スクロールのために働く:) –

関連する問題