Laukimas, kol puslapis bus įkeltas "Selenium

Kaip priversti Selenium 2.0 laukti, kol bus įkeltas puslapis?

Naudokite klasę WebDriverWait

Taip pat žr. čia

Galite tikėtis, kad bus rodomas tam tikras elementas. kažkas panašaus į 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"));
Komentarai (7)

Apskritai, naudojant "Selenium 2.0", žiniatinklio tvarkyklė turėtų grąžinti valdymą skambinančiam kodui tik tada, kai nustato, kad puslapis įkeltas. Jei taip nėra, galite iškviesti waitforelemement, kuris cikliškai kviečia findelement, kol jis randamas arba baigiasi (galima nustatyti laiko limitą).

Komentarai (6)

Jei norite laukti, kol bus įkeltas konkretus elementas, galite naudoti RenderedWebElement metodą 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;
    }
}

(Pavyzdys iš The 5 Minute Getting Started Guide)

Komentarai (2)