我正在尝试使用Selenium和C#实现网络测试的自动化。
我有一个web应用程序的某些部分,如页眉和页脚重复在多个页面。
假设我有SecA,SecB,SecC节。在我的页面中,它将显示为Page1将有{SecA,SecB,SecC},Page2将有{SecA,SecB},Page3将有{SecB,SecC}。
我不想在每个页面对象中创建副本。如何定义这些部分并将其包含到我的页面类中?
如果你能提供一些示例代码,那就太好了。
发布于 2017-04-12 08:35:11
//SecA:
public class SecA
{
[FindsBy(How = How.Id, Using = "Id")]
private IWebElement SecAField;
//Add Getters, setters, methods, constructors, etc..
}
//SecB:
public class SecB
{
[FindsBy(How = How.Id, Using = "Id")]
private IWebElement SecBField;
//Add Getters, setters, methods, constructors, etc..
}
//SecC:
public class SecC
{
[FindsBy(How = How.Id, Using = "Id")]
private IWebElement SecCField;
//Add Getters, setters, methods, constructors, etc..
}
//Page 1:
public class Page1
{
public SecA secA { get; set; }
public SecB secB { get; set; }
public SecC secC { get; set; }
//Add Getters, setters, methods, constructors, etc..
public Page1()
{
secA = new SecA();
secB = new SecB();
secC = new SecC();
}
}发布于 2017-04-12 08:15:34
您必须为每个部分创建Page对象,并将它们定义为所需页面中的属性/Getters方法。
发布于 2017-04-12 07:26:53
您可以使用继承,就像在正常代码中一样。创建一个包含页眉和页脚组件的基类,并让其他页面对象扩展这些类。
public class BasePageObject
{
[FindsBy(How = How.Name, Using = "username")]
private IWebElement UsernameField;
[FindsBy(How = How.Name, Using = "password")]
private IWebElement PasswordField;
[FindsBy(How = How.Name, Using = "email")]
private IWebElement MailingListFormEmail;
public void Login()
{
// Login to the application
}
public void SubscribeToMailingList()
{
// Subscribe to the mailinglist
}
}
public class IndexPage : BasePageObject
{
// Your Concrete page here
}我希望这有帮助,如果我没有正确理解你的问题,请告诉我。
https://stackoverflow.com/questions/43362865
复制相似问题