Selenium C# 中 WebDriverWait 如何增強元素存在性驗證?
在 Selenium C# 中,在執行操作之前驗證元素是否存在對於確保測試準確性至關重要。 WebDriverWait 類別在這裡大放異彩,它允許我們以程式設計方式暫停測試執行,直到指定的元素出現。
設定匿名函數
為了有效地利用 WebDriverWait,我們需要定義一個「Until」條件,其中包含必要的檢查。您所描述的直接方法無法如預期般運作。我們將探索更精細的實作。
利用自訂擴充方法
為了增強 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>
用法與優勢
此擴充方法易於使用,並消除了與隱式等待相關的效能問題。這是一個實際範例:
<code class="language-csharp">var driver = new FirefoxDriver(); driver.Navigate().GoToUrl("http://localhost/mypage"); var btn = driver.FindElement(By.CssSelector("#login_button")); btn.Click(); var employeeLabel = driver.FindElement(By.CssSelector("#VCC_VSL"), 10); Assert.AreEqual("Employee", employeeLabel.Text); driver.Close();</code>
透過在搜尋元素時指定逾時,我們的測試將有效地處理元素可能動態出現或消失的情況。這種方法確保了準確性並優化了測試性能。
以上是WebDriverWait如何在硒C#中增強元素的存在驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!