Αναμονή για φόρτωση σελίδας στο Selenium

Πώς κάνετε το Selenium 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 το πρόγραμμα οδήγησης ιστού θα πρέπει να επιστρέφει τον έλεγχο στον καλούντα κώδικα μόνο όταν διαπιστώσει ότι η σελίδα έχει φορτωθεί. Εάν δεν το κάνει, μπορείτε να καλέσετε το waitforelemement, το οποίο καλεί κυκλικά το findelement μέχρι να βρεθεί ή να λήξει ο χρόνος (ο χρόνος μπορεί να οριστεί).

Σχόλια (6)

Αν θέλετε να περιμένετε να φορτώσει ένα συγκεκριμένο στοιχείο, μπορείτε να χρησιμοποιήσετε τη μέθοδο isDisplayed() σε ένα RenderedWebElement :

// 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;
    }
}

(Παράδειγμα από The 5 Minute Getting Started Guide)

Σχόλια (2)