硒c#webdriver:強大的元素等待技術
>有效地與硒中的網路元素互動,需要在嘗試採取任何行動之前確保其存在。 這樣可以防止因未及時載入元素而引起的常見錯誤。 讓我們使用WebDriverWait
和ExpectedConditions
>。
>和WebDriverWait
:ExpectedConditions.ElementIsVisible
>
<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("login")));</code>
但是,僅依靠隱式等待會對表現產生負面影響。一種更受控的方法涉及一種用於
<code class="language-csharp">wait.Until(d => d.FindElement(By.Id("login")).Displayed);</code>
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>
此方法試圖在10秒內使用CSS選擇器「 #Login_Button」找到元素。 如果在超時內找不到元素,則將拋棄a
。這提供了一種更精確,更有效的方法來處理元素等待,從而改善了硒測試的整體穩健性。以上是如何有效地等待Selenium C#Web驅動器中的元素存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!