第 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; }
}
我正在使用页面 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; }
}