WebDriver.Wait N'attend pas l'élément spécifié
Requête :
Mon code tente d'attendre l'apparence d'un élément avant de récupérer son contenu textuel. En parcourant le code, il fonctionne correctement. Cependant, lorsqu'elle est exécutée sans points d'arrêt, l'attente semble être contournée et une exception est levée.
Pourquoi l'attente est-elle négligée ?
Extrait de code :
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30)); IWebElement message = wait.Until(driver => driver.FindElement(By.ClassName("block-ui-message"))); string messageText = message.Text;
Réponse :
Une approche alternative consiste à utiliser Méthode ElementIsVisible() de WebDriverWait en combinaison avec une stratégie de localisation modifiée :
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
Utilisation de DotNetSeleniumExtras.WaitHelpers avec NuGet :
Si vous utilisez SeleniumExtras et WaitHelpers, le code peut être modifié comme suit :
string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(10)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");
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!