Maison >Java >javaDidacticiel >Comment attendre de manière fiable la visibilité des éléments dans WebDriver avant de cliquer ?

Comment attendre de manière fiable la visibilité des éléments dans WebDriver avant de cliquer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 05:58:10294parcourir

How to Reliably Wait for Element Visibility in WebDriver Before Clicking?

WebDriver : En attente de la présence d'un élément

Question : Comment puis-je attendre de manière fiable qu'un élément devienne visible avant en cliquant dessus ? Les attentes implicites seules semblent incohérentes.

Pour résoudre ce problème, des attentes implicites peuvent être utilisées. Cependant, une solution plus fiable est :

for (int second = 0;; second++) {
    Thread.sleep(sleepTime);
    if (second >= 10)
        fail("timeout : " + vName);
    try {
        if (driver.findElement(By.id(prop.getProperty(vName))).isDisplayed())
            break;
    } catch (Exception e) {
        writeToExcel("data.xls", e.toString(), parameters.currentTestRow, 46);
    }
}
driver.findElement(By.id(prop.getProperty(vName))).click();

Ce code attend que l'élément soit visible ou qu'une valeur de délai d'attente soit atteinte. Cependant, cela oblige l'utilisateur à définir le temps d'attente, ce qui peut être gênant.

Réponse : Utilisez les capacités d'attente explicites de WebDriver pour garantir des attentes fiables pour la présence d'un élément.

Le code suivant illustre l'approche recommandée :

WebDriverWait wait = new WebDriverWait(webDriver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id<locator>));

Vous pouvez également utilisation :

wait.until(ExpectedConditions.elementToBeClickable(By.id<locator>));

Ces méthodes fournissent un contrôle précis des conditions d'attente, éliminant ainsi le besoin d'une logique de veille personnalisée.

Supplémentaire Ressources :

  • [Conditions attendues](https://seleniumhq.github.io/selenium/javadoc/3.141.59/org/openqa/selenium/support/ui/ExpectedCondit ions.html)
  • [WebDriverWait](https://seleniumhq.github.io/selenium/javadoc/3.141.59/org/openqa/selenium/support/ui/WebDriverWait.html)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn