例如,假设我有FanPage类,带有此批注
@FindBy(how = How.ID, using = "ctl00__lvph_Add")
private WebElement _AddFanButton;
然后在测试代码中我说
fanPage = homePage.GoToFanPage()
哪个
return PageFactory.initElements(driver, CC_VendorStatisticsMetadata.class);
现在,如果我的注释不正确(假设它应该是ctl00_lvph_AddFan),那么我对initElements的调用将会失败。但是,事实并非如此,它只是向我返回一个FanPage对象。仅当我尝试使用_AddFanButton时,它才会失败。
如何使PageFactory从一开始就寻找我的注释?
最佳答案
你不知道PageFactory
进行延迟初始化,这就是它的设计方式。
考虑一个页面对象,在该页面对象中,某些元素直到采取某种操作才存在。由于页面对象旨在封装业务逻辑,而不仅仅是页面上的元素,因此,这是一种完美的逻辑方案。在这种情况下,您的initElements()
调用每次都会在页面对象初始化上失败,并且没有给您机会调用会导致元素出现的业务逻辑方法。
如果这是您的测试框架的要求,则PageFactory
可能对您不起作用。在这种情况下,您最好构建自己的实现。