第 Object 页模型实践

Page Object Model Practices

我正在使用页面 Object 模型和 Selenium

为网站构建测试框架

我在想,一般来说,如果我有两个页面具有完全相同的用户控件和功能,但 URL 不同,我应该创建一个父页面 class,其中有两个 class 继承自它。 但是,如果我有相同的两个页面但控件的定位符不同怎么办?你怎么看?您认为为每个页面创建一个完全独立的 class 是一个好习惯吗?或者有没有办法让 children classes 覆盖定位器?知道我正在使用 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();

    }

}

你可以这样做:

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; }
}