SeleniumWebDriverで特定の要素の対してクリックなりsendkeysなりさせようとしても、なぜかエラーになって上手くいかない場合があります。

このときにたまにあるのが、操作対象の要素が画面内に表示されていなくてエラーになる場合。基本的にはWebDriver側が勝手に対象要素までスクロールして操作してくれるはずなのですが、稀にそれが効かない要素があり。

半分バッドノウハウですが、別途自分で明示的にスクロールさせて、それからクリック等の操作を行ってみるとよいでしょう。

指定の要素までスクロール

/**
- 指定した要素が画面内に表示されるようスクロールする。
- @param driver
- @param element 画面内に表示させたい要素
*/
public static void ScrollTo(WebDriver driver, WebElement element) {
    ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(false);", element);
}

Javaの例です。JavaでJavaScriptを実行し、要素までスクロールさせる。コレだけです。

ちゃんと書いているはずなのになぜかエラーでうまくいかない、という場合に駄目元で試してみてください。