Prise en Sélénium pause de X secondes
Ce que je suis en train d'accomplir est de la navigation d'une page, en attente de quelque chose à charger, puis prendre et enregistrer une capture d'écran.
Le code que j'ai déjà
WebDriver driver = new FirefoxDriver();
driver.get("http://www.site.com");
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/home/Desktop/image.png"));
} catch (Exception e) {
e.printStackTrace();
}
driver.close();
La raison pour laquelle je besoin d'attendre, même si le chargement de la page est parce qu'il va être chargé, mais sur le site, le contenu, je voudrais prendre une photo des charges après quelques secondes. Pour une raison quelconque, la page n'est pas en attente, est-il une autre méthode que je peux utiliser pour obtenir le pilote/page d'attendre pour un montant de X secondes?
Vérifiez ce post : stackoverflow.com/questions/5868439/...
OriginalL'auteur user2612619 | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver un élément qui se charge après le premier chargement de la page et ensuite faire le Sélénium attendre jusqu'à ce que l'élément est trouvé.
OriginalL'auteur user2612619
Qui ne serait pas vraiment être de sélénium chose en particulier. Vous voulez juste de java pour dormir un peu après le chargement de la page, mais avant de prendre la capture d'écran.
mettre qu'une fois que votre pilote.obtenez de l'instruction.
Donc, si il a été de prendre des captures d'écran dans chaque essai, dans une suite de 1 000, et l'élément qui serait normalement la charge après 500ms, cette approche permettrait d'ajouter une heure pour le temps de génération.
Si je veux que mon navigateur de rester ouvert d'un supplément de 2 secondes avant qu'il ne ferme (je l'appelle .Quit()), comment dois-je faire?
Désolé - downvoted pour l'utilisation de Thead.sommeil. Il y a toujours d'autres solutions, telles que le conditionnel d'attente et ainsi de suite
OriginalL'auteur Jas
Juste au cas où il aidera quelqu'un, vous devriez toujours essayer d'éviter implicite attend et surtout
Thread#sleep
autant que vous le pouvez. Si vous neThread.sleep(10)
, votre code toujours attendre 10 secondes, même dans le cas où votre page est prête après 1 seconde. Donc cela peut ralentir votre tests considérablement si vous utilisez souvent.Meilleure façon est d'utiliser ExplicitWaits qui vous signifie que vous devrez attendre exactement aussi longtemps que l'action se passe ou de quelque élément sera affiché sur la page. Donc dans votre cas, je voudrais utiliser explicite attendre pour vérifier si tout est chargé, puis de prendre une capture d'écran.
OriginalL'auteur Petr Mensik
Si vous voulez retarder un certain nombre de secondes, plutôt que de répondre dès que possible, voici une fonction pour mettre en pause similaire à ce que selenium IDE offre:
source
OriginalL'auteur JohnP2