Le sélénium implicitlyWait Pas de Travail?
Je suis en train d'apprendre le Java Maven Sélénium. Je veux quelque chose de ce genre dans le Sélénium aide implicitlyWait
.
- Ouvrir site web (par exemple https://www.facebook.com)
- Cliquez sur le champ adresse e-mail de connexion
- Attendre 20 secondes
- Entrer mon e-mail
Voici mon code simple:
package com.org.learningMaven;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;
public class HelloWorldTest {
@Test
public void login() {
WebDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
driver.findElement(By.id("email")).click();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.findElement(By.id("email")).sendKeys("[email protected]");
}
private void sendKeys(Keys enter) {
//TODO Auto-generated method stub
}
}
Ce code ne fonctionne pas. Il va simplement ouvrir Facebook, cliquez sur le champ adresse e-mail & entrer mon id e-mail plutôt que d'attendre 10 secondes avant d'entrer mon email.
lire la doc seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits et conclusion lorsque nous avons besoin de l'utiliser 😛
et pouvez-vous nous expliquer pourquoi vous avez besoin d'attendre montant spécifique de temps? il ne fait pas de sens pour moi, dans ce cas particulier.
vous avez raison, il ne fait pas de sens à l'aide d'attendre ici, je viens de faire ce un exemple simple pour comprendre le processus facilement. 🙂
nice, bienvenue DONC, gooood yeux 😛
& j'ai essayé de poster sur mon Facebook timeline. si je poste un lien google.com là, alors je vais attendre 10 secondes pour charger le lien de vignette avant de cliquer sur le bouton Poster. & je pense que ma prochaine question sera de savoir comment Cliquez sur le bouton Poster, atteignant post le bouton à l'aide de la touche de TABULATION n'est pas une bonne manière, il est difficile de savoir combien de temps je doit appuyer sur la touche de TABULATION pour se Concentrer bouton POST 😛 et..... les yeux...? Merci
et pouvez-vous nous expliquer pourquoi vous avez besoin d'attendre montant spécifique de temps? il ne fait pas de sens pour moi, dans ce cas particulier.
vous avez raison, il ne fait pas de sens à l'aide d'attendre ici, je viens de faire ce un exemple simple pour comprendre le processus facilement. 🙂
nice, bienvenue DONC, gooood yeux 😛
& j'ai essayé de poster sur mon Facebook timeline. si je poste un lien google.com là, alors je vais attendre 10 secondes pour charger le lien de vignette avant de cliquer sur le bouton Poster. & je pense que ma prochaine question sera de savoir comment Cliquez sur le bouton Poster, atteignant post le bouton à l'aide de la touche de TABULATION n'est pas une bonne manière, il est difficile de savoir combien de temps je doit appuyer sur la touche de TABULATION pour se Concentrer bouton POST 😛 et..... les yeux...? Merci
OriginalL'auteur carol | 2015-12-22
Vous devez vous connecter pour publier un commentaire.
Implicit Wait
etExplicit Waits
ne fonctionne pas de cette façon, ils seront d'attente maximal pour l'élément de la durée de temps spécifiée, S'ils trouvent de l'élément avant que la prochaine étape serait exécuté.Si vous voulez que votre test d'attendre pour la durée exacte, vous souhaiterez peut-être utiliser.
Vous pouvez consulter Diff b/w Implict Attendre et Attendre Explicite
Explicite Attend : explicite attend est un code que vous définissez à attendre pour un certain état de se produire avant d'aller plus loin dans le code.
Implicite Attend : implicite de L'attendre, c'est à dire WebDriver pour interroger les DOM pour une certaine quantité de temps à essayer de trouver un élément ou d'éléments si elles ne sont pas immédiatement disponibles.
Fil.sommeil : Dans le sommeil de code, Il va toujours attendre mentionné secondes, même dans le cas où la page est prête à interagir après 1 seconde. Donc, cela peut ralentir les tests.
Mais ce n'est pas une bonne pratique d'utiliser
Thread.sleep
vous devez toujours essayer d'utiliserImplicit or Explicit Waits
.pouvez-vous me dire svp pourquoi il n'est pas bon? dans mon cas, j'ai seulement envie d'attendre quelques secondes avant de faire toute action, donc de quel côté effets que je peux avoir avec le sommeil méthode ? merci
ok permettez-moi de modifier ma réponse ensuite.
je suis avec try { Thread.sommeil(20000); } catch (InterruptedException e) { // TODO Auto-généré bloc catch e.printStackTrace(); }
OriginalL'auteur Paras
Fil.le sommeil s'arrête d'exécution pour la période en question. C'est pourquoi il est recommandé de ne pas utiliser Thread.dormir dans l'exécution de votre script. Où Implicite/Explicite attendre traite notamment webelement. Si le script détecte le web requis élément est présent dans la page, le script se déplace sur. Si il ne trouve pas le mentionné web de l'élément, si retrouve cet élément dans la page web pour cette période d'attente.
OriginalL'auteur Prashant Shekhar
Si un web élément ne s'affiche pas et vous voulez attendre pour que cet élément soit affiché puis code suivant fonctionne.
OriginalL'auteur learner
Mettre En Œuvre WebDriverWait
OriginalL'auteur Bart Van De Slijcke