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