我想实例化我的页面类,以在不使用PageFactory.initElements()或new Operator的情况下从testng类访问方法。我想让我的测试代码看起来干净整洁。
当前,我正在使用PageFactory.initElements()方法为所有testng类中的每个类初始化我的页面类,这导致代码不可读且不干净。
Homepage homePage = PageFactory.initElements(driver,HomePage.class);
是否有任何注释可以自动注入页面类?
答案 0 :(得分:0)
第一步-创建一个静态驱动程序类
public sealed class Driver
{
[ThreadStatic]
private static IWebDriver driver = null;
public static IWebDriver Instance
{
get
{
if (driver == null)
{
driver = new ChromeDriver();
}
return driver;
}
}
public static void Testcleanup()
{
driver.Quit();
driver = null;
}
}
第2步-创建将初始化页面对象的基类
public class TestBase
{
private LoginPage loginPage;
private HomePage homePage;
public TestBase()
{
loginPage = new LoginPage();
homepage = new HomePage();
PageFactory.InitElements(Driver.Instance, loginPage);
PageFactory.InitElements(Driver.Instance, homePage);
}
public static LoginPage Login
{
get { return Instance.loginPage; }
}
public static HomePage Home
{
get { return Instance.homePage; }
}
private static TestBase Instance
{
get
{
return new TestBase();
}
}
}
Step3:最后在测试类中使用基类
[TestClass]
public class PageInitTest : TestBase
{
[TestMethod]
public void PageInit()
{
Driver.Instance.Navigate().GoToUrl("url");
Login.Email.SendKeys("Demo@gmail.com");
}
}