可以在已定义的元素上使用WebDriverWait吗?

时间:2019-06-25 10:54:09

标签: c# selenium webdriverwait

我正在构建一个使用页面对象模型(POM)并具有一个名为HomePage的类文件的自动化框架。

我已经使用声明了元素:

[FindsBy(How = How.Id, Using = "TextField1")]
private IWebElement FirstTextField{ get; set; }

我已声明我的WebDriverWait如下:

WebDriverWait wait = new WebDriverWait(driver,TimeSpan.FromSeconds(30));

我在HomePage.cs中有一个称为Validate()的方法,在此方法中我想使用 WebDriverWait如下:

wait.Until(ExpectedConditions.ElementIsVisible(FirstTextField))

如何以这种方式使用WebDriverWait,而不必使用“按”定位器:

wait.Until(ExpectedConditions.ElementIsVisible(By.Id("TextField1")));

1 个答案:

答案 0 :(得分:0)

UPDATE table1 SET column4 = column1 + column2 WHERE (column1 + column2) IS NOT NULL AND column3 IS NULL; 在C#ExpectedConditions中没有ExpectedConditions.ElementIsVisible()的重载。您可以使用自定义实现

IWebElement

用途:

public static Func<IWebDriver, IWebElement> ElementIsVisible(IWebElement element)
{
    return (driver) =>
        {
            try
            {
                return return element.Displayed ? element : null;
            }
            catch (StaleElementReferenceException)
            {
                return null;
            }
        };
}