如何将Wait.Until与Selenium C#一起用于现有元素

时间:2016-01-10 05:39:05

标签: c# selenium selenium-webdriver

我正在寻找一种在selenium(C#)中使用<div style="width:100%; background-color:#ACD13C; padding:50px 0; "> <table style="margin:0 auto;" bgcolor="white" width="500" cellpadding="0" cellspacing="0"> <tr> <td>Text goes here</td> </tr> </table> </div> 的方法,但是对于现有元素。那样:

wait.until

现在,我想将wait.until用于上面的元素。 我能以任何方式做到这一点吗? 谢谢 参见Yaniv

1 个答案:

答案 0 :(得分:1)

您可以创建一个抽象页面对象作为页面对象的父对象,并从构造函数中调用一个抽象方法,该方法在子页面中实现:

public abstract class AbstractPage
{
    protected AbstractPage()
    {
        WaitUntilExist();
    }

    protected abstract void WaitUntilExist();
}

public class MyPage : AbstractPage
{
    [FindsBy(How = How.Id, Using = "SomeID")]
    private IWebElement SearchButton;

    public MyPage()
    {
    }

    protected override void WaitUntilExist()
    {
        wait.Until(ExpectedConditions.ElementExists(By.Id("SomeID")));
    }
}

在子页面中元素初始化之前,将从父构造函数调用方法WaitUntilExist()。由于它是抽象的,因此子类中的方法将被执行。