我正在使用带有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();
}
}
答案 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; }
}