Maison > développement back-end > C++ > Pourquoi mon WebDriverWait ne parvient-il pas à attendre lors de l'exécution sans points d'arrêt ?

Pourquoi mon WebDriverWait ne parvient-il pas à attendre lors de l'exécution sans points d'arrêt ?

Barbara Streisand
Libérer: 2024-12-30 20:33:09
original
499 Les gens l'ont consulté

Why Is My WebDriverWait Failing to Wait When Running Without Breakpoints?

WebDriverWait n'attend pas comme prévu

Lors de la tentative de récupération du texte d'un élément, une attente est implémentée pour garantir que l'élément est visible avant récupération. Cependant, l'attente semble être contournée lorsque le code est exécuté sans points d'arrêt, ce qui entraîne une exception.

Explication du problème

L'extrait de code fourni utilise la méthode FindElement de la classe WebDriverWait, qui lève une exception si l'élément est introuvable dans le délai d'attente spécifié (30 secondes dans ce cas). Cette immédiateté pourrait résulter du fait que l'élément n'est pas visible ou chargé au moment où la période d'attente expire.

Solution

Comme alternative, vous pouvez utiliser la condition ElementIsVisible de la classe ExpectedConditions en combinaison avec WebDriverWait. Cette approche induira une attente jusqu'à ce que l'élément satisfasse à la condition (dans ce cas, être visible). De plus, vous pouvez utiliser la méthode GetAttribute pour obtenir le HTML interne de l'élément au lieu de la propriété Text.

Voici un exemple utilisant la condition ElementIsVisible :

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Copier après la connexion

Option DotNetSeleniumExtras.WaitHelpers

Si vous employez SeleniumExtras.WaitHelpers via NuGet, vous pouvez exploiter la condition ElementIsVisible de la classe ExpectedConditions comme suit :

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal