在Selenium中等待页面加载

如何让Selenium2.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中,网络驱动应该只在确定页面已经加载后才将控制权返回给调用代码。如果没有,你可以调用waitforelemement,它循环调用findelement,直到找到它或超时(可以设置超时)。

评论(6)

如果你想等待一个特定的元素加载,你可以在一个RenderedWebElement上使用isDisplayed()方法。

// 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分钟入门指南》1)

评论(2)