概要
Seleniumのテストでブラウザをスクロールする場合に調べた内容をメモしておく。
要素指定
要素を指定して移動する。
※ 位置の微調整のために、offset引数を用意しています
※ スクロールについてくるナビゲーションなどがあった場合、位置の微調整が必要
メソッド定義
class Browser:
def scrollByElemAndOffset(self, element, offset = 0):
self.driver.execute_script("arguments[0].scrollIntoView();", element)
if (offset != 0):
script = "window.scrollTo(0, window.pageYOffset + " + str(offset) + ");"
self.driver.execute_script(script)
使用例
browser = Browser()
element = browser.driver.find_element_by_id('some_id')
browser.scrollByElemAndOffset(element, -10)
高さ指定
高さを指定して移動する。
メソッド定義
class Browser:
def scrollByY(self, height):
self.driver.execute_script("window.scrollTo(0, " + str(height) + ");")
使用例
browser = Browser()
element = browser.driver.find_element_by_id('some_id')
browser.scrollByY(element.location_once_scrolled_into_view['y'])
まとめ
高さ指定の場合、広告など遅れて後から表示されるものがあった場合、位置がズレたりするみたい。
要素指定で微調整した方が、あまりズレなくて良さそう・・・