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を実行し、要素までスクロールさせる。コレだけです。
ちゃんと書いているはずなのになぜかエラーでうまくいかない、という場合に駄目元で試してみてください。