解決策 1) 最後の要素までスクロールする
Vinayのアプローチはうまくいくはずだと思います。ただし、現在のフォームでは、要素がページに既に存在することを前提としています。必要な要素は、十分にスクロールして初めて表示されると思います。したがって、できることは、div の最後の要素までスクロールすることです。
Watir-Webdriver
Watir-Webdriver では:
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
div_with_scroll.elements.last.wd.location_once_scrolled_into_view
ワティルクラシック
Watir-Classic では、selenium-webdriver を使用しないため、異なります。
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
div_with_scroll.elements.last.document.scrollIntoView
解決策 2) ScrollTop プロパティを使用する
別の方法として、上記が機能しない場合はscrollTop
、div 要素のスクロールバーを移動するようにプロパティを設定できます。これは、私が取り組んでいた、一番下までスクロールしたときにのみ読み込まれるコンテンツを持つアプリケーションで機能しました。
Watir-Webdriver
スクロールバーを一番下にジャンプするには、理論的には以下のコンテンツの読み込みをトリガーする必要があります。scrollTop
プロパティを次のように設定しますscrollHeight
。
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
scroll_bottom_script = 'arguments[0].scrollTop = arguments[0].scrollHeight'
div_with_scroll.browser.execute_script(scroll_bottom_script, div_with_scroll)
一番上に戻るには、scrollTop
を 0 に設定します。
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
scroll_top_script = 'arguments[0].scrollTop = 0'
div_with_scroll.browser.execute_script(scroll_top_script, div_with_scroll)
移動する必要がある場所に応じて、その間の任意の値を使用することもできます。
ワティルクラシック
Watir-Classic では、scrollHeight
より直接的に設定できます。
div_with_scroll = browser.div(:class => 'containerNode tabContentPane typeNavigationSingleChild')
#Go to bottom
div_with_scroll.document.scrollTop = div_with_scroll.document.scrollHeight
#Go to top
div_with_scroll.document.scrollTop = 0