public HomePage LoginAs(String user,String password){
userName.sendKeys(user);
psswd.sendKeys(password);
signIn_btn.click();
return PageFactory.initElements(driver, HomePage.class);
}
// return PageFactory.initElements(driver, HomePage.class);Or
// return new HOmePage(driver)
创建一个HomePage
类的新对象,并在//构造函数中初始化,如下所示。
public HomePage(WebDriver driver) {
PageFactory.initElements(driver,this);
}
什么是良好的标准方法?它们两者都会相同吗?
答案 0 :(得分:0)
两者之间差别不大。
在我看来,后者更具可读性,因为return new HomePage();
是不言自明的。然而,这种方法的问题是当你使用基类时:
public abstract class Page {
private WebDriver driver;
public Page(WebDriver driver) {
PageFactory.initElements(driver,this);
}
}
你的HomePage
扩展了它,当你打电话给new HomePage();
时,你将进入无限循环。所以我个人坚持使用return PageFactory.initElements(driver, HomePage.class);
答案 1 :(得分:0)
我将使用第二个选项,因为它更符合逻辑且更易读,但我还建议将其转换为
return new HomePage();
因为它更具可读性,你可以使用静态类为驱动程序执行此操作,或者您可以找到任何其他方式使您能够摆脱驱动程序传递,测试人员应该能够编写测试,即使他对硒一无所知 我建议像:
public static class Browser
{
public static IWebdriver Driver = new whateverBrowser();
}
public class BasePage
{
public BasePage()
{
PageFactory.InitElements(Browser.Driver,this);
}
}
public class HomePage:BasePage
{
}