Fermer

octobre 10, 2022

Guide des attentes implicites, explicites et fluides dans Selenium


L’une des capacités les plus cruciales à comprendre si vous souhaitez devenir un utilisateur expert de Selenium WebDriver est l’utilisation des commandes d’attente. Ils sont nécessaires pour exécuter des scripts de test et pour localiser et résoudre les problèmes de temps de latence dans les éléments Web.

Vous découvrirez différents types d’attente Selenium dans ce blog :

  • Besoin d’attente en sélénium
  • Attente implicite
  • Attente explicite
  • Attente fluide
  • Différence entre l’attente implicite et l’attente explicite

Besoin d’attente en sélénium

En synchronisant notre test pour s’assurer que Selenium WebDriver attend que l’application soit disponible avant d’effectuer une action donnée, nous pouvons résoudre les problèmes de synchronisation prévus.

En raison de l’utilisation d’Ajax et de JavaScript dans l’application, lorsqu’une page est chargée par le navigateur, les composants avec lesquels nous voulons interagir peuvent se charger à différents moments. De ce fait, il faut proposer quelques temps d’attente avant d’effectuer une action sur un élément précis.

Image 1

Attente implicite

Nous indiquons à WebDriver qu’il doit attendre une période de temps prédéterminée avant d’anticiper que l’élément sera affiché après le chargement.

Ainsi, il tentera de trouver l’élément Après avoir attendu pendant une durée prédéterminée. Si toujours l’élément n’est pas trouvé, Exception NoSuchElementFound sera jeté.

Syntaxe

driver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS);

Exemple-

Pilote WebDriver= nouveau FirefoxDriver();

driver.get(« https://perficient.com »);

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Attente explicite

Nous demandons à WebDriver d’attendre qu’un certain laps de temps se soit écoulé avant de s’attendre à ce que l’élément soit visible après le chargement.

Par conséquent, il tentera de trouver l’élément après avoir attendu un laps de temps prédéterminé. Exception NoSuchElementFound sera déclenché si l’élément est toujours manquant.

Syntaxe-

WebDriverWait wait = new WebDriverWait(driver, 10);

Élément WebElement = wait.until(ExpectedConditions.elementToBeClickable(By.id(« ID »)));

Pour déclarer une attente explicite, il faut utiliser « Conditions attendues”. Quelques conditions attendues pouvant être utilisées dans l’attente explicite sont données ci-dessous.

  • elementToBeClickable()
  • elementToBeSelected()
  • alertIsPresent()
  • elementSelectionStateToBe()
  • invisibilityOfTheElementLocated()
  • invisibilityOfElementWithText()
  • visibilitéDeTousLesÉléments()
  • visibilitéOfAllElementsLocatedBy()
  • visibilitéOfElementLocated()

Exemple-

// attente explicite – pour attendre que le bouton soit cliquable

WebDriverWait wait = new WebDriverWait(driver,30);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(“//div[contains(text(),’BUTTON’)]”)));

Attente fluide

Afin de déterminer si l’élément est affiché sur la page, nous demandons à WebDriver d’interroger le DOM Toutes les ‘n’ secondes. La fréquence d’interrogation des attentes explicites est 500ms par Défaut. De plus, selon vos demandes, l’attente fluide Fréquence d’interrogation peut être Modifié. Si vous ne localisez pas un élément lors de l’interrogation, vous pouvez ignorer toute exception, telle que NoSuchElementExceptionetc.

Syntaxe-

FluentWait attend = nouveau FluentWait (pilote)

.withTimeout(TotalTime, TimeUnit.SECONDS)

.pollingEvery(pollingTime, TimeUnit.SECONDS)

.ignoring(NoSuchElementException.class);

Exemple-

FluentWait attend = nouveau FluentWait (pilote)

.withTimeout(15, TimeUnit.SECONDS)

.pollingEvery(3, TimeUnit.SECONDS)

.ignoring(NoSuchElementException.class);

Différence entre les commandes d’attente implicites et explicites.

Attente impliciteAttente explicite
Il est généralement utilisé lorsque vous êtes certain que l’élément sera affiché à un moment précis.Il est généralement utilisé lorsque vous n’êtes pas sûr du moment où un élément sera vu. Il rencontre la nature dynamique.
Contrairement à explicite, nous ne pouvons pas attendre en fonction d’un critère donné comme la sélection d’un élément ou la cliquabilité.Nous pouvons spécifier l’attente de manière explicite en fonction d’une situation particulière.
Il est automatiquement appliqué à tous les éléments du script.Il ne s’applique qu’à un certain composant qui est unique à une condition particulière.

Conclusion:

Les différentes attentes dans Selenium sont l’attente fluide, l’attente explicite et l’attente implicite. Les objets qui sont chargés à des moments différents déterminent comment ces attentes sont entièrement utilisées. L’utilisation de Thread n’est jamais conseillée. Sleep() est utilisé lors du test ou de la création d’un framework.






Source link

octobre 10, 2022