我正在使用selenium webdriver学习页面对象模型,有人可以告诉我这些吗?
1 - 为什么POM中的每个页面都有构造函数来初始化webdriver对象? (如下所示)如果未初始化webdriver会发生什么?
public class New_Register
{
WebDriver driver;
public New_Register(WebDriver driver)
{
this.driver=driver;
}
@FindBy(xpath=".//input[@id='emailAdd']") WebElement EmailID;
}
2 - POM是Selenium Webdriver中的框架或设计模式吗?
答案 0 :(得分:1)
如果您的Page Object继承自LoadableComponent类,强制您覆盖load和isloaded方法,并且您使用PageFactory.initElements初始化您的webelements的代理(@Find ...),我认为您将它用作框架。如果您处理所有这些事情,负责检查您的页面是否已加载,获取webelements,传递pageobject等,但您使用类来模拟页面或其部分功能,它可能被视为设计模式。
如果您没有传入驱动程序,则必须自己初始化驱动程序。否则,当您调用任何方法时,您将获得最喜欢的Null Pointer Exception。此外,当您调用PageFactory.initElements时,它首先在页面对象上查找构造函数,并将驱动程序作为唯一参数。然后只有它找到默认值,如果它没有得到前一个,那么你将不得不自己处理驱动程序初始化。