Seleniumでページロードを待つ

Selenium]1 2.0がページの読み込みを待つようにするには?

クラスWebDriverWaitを使用します。

また、こちらもご覧ください。

C#のような要素が表示されることが期待できます。

WebDriver _driver = new WebDriver();
WebDriverWait _wait = new WebDriverWait(_driver, new TimeSpan(0, 1, 0));

_wait.Until(d => d.FindElement(By.Id("Id_Your_UIElement"));
解説 (7)

一般的にSelenium 2.0では、Webドライバはページが読み込まれたと判断した場合にのみ、呼び出したコードに制御を返すべきです。そうでない場合は、waitforelemementを呼び出すことができます。waitforelemementは、findelementが見つかるかタイムアウトするまで、呼び出しを繰り返します(タイムアウトは設定可能です)。

解説 (6)

特定の要素がロードされるのを待ちたい場合は、RenderedWebElementisDisplayed() メソッドを使うことができます。

// Sleep until the div we want is visible or 5 seconds is over
long end = System.currentTimeMillis() + 5000;
while (System.currentTimeMillis() < end) {
    // Browsers which render content (such as Firefox and IE) return "RenderedWebElements"
    RenderedWebElement resultsDiv = (RenderedWebElement) driver.findElement(By.className("gac_m"));

    // If results have been returned, the results are displayed in a drop down.
    if (resultsDiv.isDisplayed()) {
      break;
    }
}

(例:5分でわかる入門ガイドより)

解説 (2)