Seleniumでクリック対象要素を画面の下端にスクロールさせる設定

お疲れさまです。@yoshikiitoです。

Seleniumでブラウザ上のボタン等をクリックさせるときに、下記のようなエラーが出ることがあります。

org.openqa.selenium.WebDriverException: Element is not clickable at point (123, 45.678).
Other element would receive the click: <div class=”logo”></div>

最初悩んだんですけど実は原因は簡単で、ボタンをクリックさせたいのにボタンと追尾ヘッダーが重なってしまって押下できなかった、ということでした。

Seleniumだとデフォルトで画面の上部にクリック対象のボタンをスクロールさせます。

ボタンを上固定

これだと追尾ヘッダーと重なってしまうので、クリック対象のボタンを画面の下端までスクロールするように設定を変えてあげると、ヘッダーに邪魔されずにボタンが押下出来るようになります。

クリック対象の位置を設定

capabilitiesの設定で変えられます。

DesiredCapabilities capabilities;
System.setProperty("webdriver.gecko.driver","C:\\pleiades\\eclipse\\workspace\\WebDriver\\geckodriver.exe");
capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("elementScrollBehavior", 1); // ココ
driver = new FirefoxDriver(capabilities);

設定しているのはelementScrollBehaviorのところ。
値を0にすると画面上端にクリック対象要素をスクロール、1にすると画面下端に対象要素をスクロールします。

参考

Java Selenium WebDriver – How to set ScrollBehavior (elementScrollBehavior) without using Remote WebDriver? – Stack Overflow

ABOUTこの記事をかいた人

都内でテストエンジニア&ブロガーをやっている@yoshikiitoです。 ソフトウェアエンジニアの学習方法や成長するための考え方、会社に依存せず自分の力で生きていけるエンジニアになる方法などについて興味があります。 こういった方法や考え方、自分が試したことなどをブログを通じて発信します。 仕事は主にソフトウェアテストやテスト自動化。 趣味は浦和レッズと読書と技術書を買って積むこと。