Selenium C# WebDriver: Robuste Techniken zum Warten auf Elemente
Um effizient mit Webelementen in Selenium interagieren zu können, müssen Sie deren Anwesenheit sicherstellen, bevor Sie irgendwelche Aktionen ausführen. Dies verhindert häufige Fehler, die dadurch verursacht werden, dass Elemente nicht rechtzeitig geladen werden. Lassen Sie uns effektive Wartestrategien mit WebDriverWait
und ExpectedConditions
erkunden.
Der Standardansatz verwendet WebDriverWait
und ExpectedConditions.ElementIsVisible
:
<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("login")));</code>
Dieser Code wartet bis zu 5 Sekunden, bis das Element mit der ID „login“ sichtbar wird. Der Kürze halber kann ein Lambda-Ausdruck verwendet werden:
<code class="language-csharp">wait.Until(d => d.FindElement(By.Id("login")).Displayed);</code>
Wenn man sich jedoch ausschließlich auf implizite Wartezeiten verlässt, kann dies negative Auswirkungen auf die Leistung haben. Ein kontrollierterer Ansatz beinhaltet eine benutzerdefinierte Erweiterungsmethode für FindElement
:
<code class="language-csharp">public static class WebDriverExtensions { public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds) { if (timeoutInSeconds > 0) { var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(drv => drv.FindElement(by)); } return driver.FindElement(by); } }</code>
Mit dieser Erweiterungsmethode können Sie ein Timeout festlegen. Verwendung:
<code class="language-csharp">var btn = driver.FindElement(By.CssSelector("#login_button"), 10); btn.Click();</code>
Diese Methode versucht, das Element mit dem CSS-Selektor „#login_button“ innerhalb von 10 Sekunden zu finden. Wenn das Element nicht innerhalb des Timeouts gefunden wird, wird ein NoSuchElementException
geworfen. Dies bietet eine präzisere und effizientere Möglichkeit, das Warten auf Elemente zu handhaben und verbessert die Gesamtrobustheit Ihrer Selenium-Tests.
Das obige ist der detaillierte Inhalt vonWie warte ich effizient auf die Präsenz von Elementen im Selen C# WebDriver?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!