Seleniumを使ってIE11画面をスクロールさせる


初めてのケースだったので備忘録として。

基本情報

  • 執筆:2018/09/12
  • OS:Windows10
  • ブラウザ:IE11
  • Selenium-java:3.13.0
  • IEDriverServer:3.14.0

tl;dr

frameではなくdisplay:blockで分割された↓のような画面で上下のスクロールバーをそれぞれ制御したかった。

以下の方法で可能。指定する項目が見えるところまでスクロールするjavascriptの機能を利用。(以下の例は"target"要素が見えるところまでスクロールする。)

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", driver.findElement(By.id("target")));

以下、試行の記録。

#1

javascriptのscrollToを利用するがNG。画面の項目にフォーカスを当てても効かず。

((JavascriptExecutor) driver).executeScript("window.scrollTo(0, 100)", "");

#2

PageDown押下作戦、効かず。これはそもそも制御エリア内にフォーカスを当てられていなかったのが原因かも。入力フィールドにフォーカスを当てると入力フィールド内で入力されている文字列の末尾にジャンプしてしまう。(Endキーの動作と同じ。)

driver.findElement(By.id("target")).sendKeys(Keys.PAGE_DOWN);

#3

解決策と同じ手法のSelenium版。1mmも動かず。

WebElement elem = driver.findElement(By.id("target"));
Actions action = new Actions(driver);
Actions action2 = action.moveToElement(elem);
action2.perform();

※ブラウザ種類により動作が異なることはあると思うので、他ブラウザでは試行錯誤1~3の方法でももしかしたらできるのかもしれません。

弊社ではエンジニアを募集中です。こちらも見て頂けると嬉しいです。
https://www.nittsu-infosys.com/recruit/2019/index.html