151 votes

Selenium attend que le document soit prêt

Quelqu'un peut-il me dire comment faire en sorte que Selenium attende le chargement complet de la page ? Je veux quelque chose de générique, je sais que je peux configurer WebDriverWait et appeler quelque chose comme 'find' pour le faire attendre mais je ne veux pas aller aussi loin. J'ai juste besoin de tester que la page se charge avec succès et de passer à la page suivante à tester.

J'ai trouvé quelque chose en .net mais je n'ai pas réussi à le faire fonctionner en java ...

IWait<IWebDriver> wait = new OpenQA.Selenium.Support.UI.WebDriverWait(driver, TimeSpan.FromSeconds(30.00));
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));

Quelqu'un a-t-il une idée ?

-1voto

Mo D Genesis Points 379

Pour les personnes qui doivent attendre l'apparition d'un élément spécifique. (utilisation de c#)

public static void WaitForElement(IWebDriver driver, By element)
{
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
    wait.Until(ExpectedConditions.ElementIsVisible(element));
}

Ensuite, si vous voulez attendre par exemple si un class="error-message" existe dans le DOM, il vous suffit de le faire :

WaitForElement(driver, By.ClassName("error-message"));

Pour id, ce sera alors

WaitForElement(driver, By.Id("yourid"));

-3voto

in016hoe Points 478

Utilisez-vous Angular ? Si oui, il est possible que le webdriver ne reconnaisse pas la fin des appels asynchrones.

Je vous recommande de regarder Paul Hammants ngWebDriver . La méthode waitForAngularRequestsToFinish() pourrait s'avérer utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X