[英]Selenium C# ExpectedConditions with IWebElement
我想用类似的方法制作一个 class WaitForElement 但是 ExpectedConditions.ElementIsVisible 期望(By)不是(IWebElement)
class WaitForElement
{
(...)
public void waitUntilElementIsVisible(IWebElement element)
{
WebDriverWait webDriverWait = GetWebDriverWait();
webDriverWait.Until ( ExpectedConditions.ElementIsVisible(element) );
}
在我使用的 PageObject 类中
public IWebElement orderTab => Driver.FindElement(By.XPath("//a[contains(@href,'order')]"));
所以我想这样使用它:
WaitForElement.waitUntilElementIsVisible(orderTab)
有没有办法让它工作? 我无法使用
public By orderTab => By.XPath("//a[contains(@href,'order')]");
等待元素可见的代码实际上非常简单。
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.Until(d => d.FindElement(By.XPath("//a[contains(@href,'order')]")).Displayed);
我喜欢为 WebDriverWait class 创建扩展方法,如下所示:
namespace OpenQa.Selenium
{
public static class WebDriverWaitExtensions
{
public static bool UntilElementIsDisplayed(this WebDriverWait wait, By locator)
{
return wait.Until(driver => driver.FindElement(locator).Displayed);
}
}
}
要使用它,您只需要一个 WebDriverWait object 并using OpenQa.Selenium;
在 C# 文件的顶部:
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.UntilElementIsVisible(By.XPath("//a[contains(@href,'order')]"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.