页面对象模型实践

时间:2016-12-26 07:59:44

标签: c# selenium selenium-webdriver pageobjects

我正在使用带有Selenium的页面对象模型

为网站构建测试框架

我在想,一般来说,如果我有两个页面,其中包含确切的用户控件和函数,但是不同的URL我应该创建一个父页面类,它有两个继承自它的类。 但是如果我有相同的两个页面用不同的控件定位器怎么办?你怎么看?你认为为每一页创建一个完全独立的课程将是一个好习惯吗?或者有没有办法让子类覆盖定位器?知道我正在使用PageFactory。

这是一个例子

 public class Header 
    {
    [FindsBy(How = How.ClassName, Using = "logout_button")]
    public IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

public class SecondHeader
{
    [FindsBy(How = How.ClassName, Using = "logout")]
    public IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

1 个答案:

答案 0 :(得分:2)

你可以这样做:

public class Header 
    {
    [FindsBy(How = How.ClassName, Using = "logout_button")]
    public virtual IWebElement BtnLogout { get; set; }

    public Header()
    {
     PageFactory.InitElements(Browser.Driver, this);
    }

    public void Logout()
    {
        this.BtnLogout.Click();

    }

}

public class SecondHeader: Header
{
    [FindsBy(How = How.ClassName, Using = "logout")]
    public overidde IWebElement BtnLogout { get; set; }
}