我浏览了很多博客和网站,以获取有关POM(页面对象模型)的更多信息。但是,一些博客提供了使用@FindBy和PageFactory获取Web元素的示例,一些博客创建了WebElement编写的方法,并使用下面给出的findElement()方法查找元素:
1. @FindBy(id="clickhere")
WebElement linkClickHere;
public classconstructor(WebDriver driver){
return PageFactory.initElements(driver, classname.class);
}
2. public static WebElement lnk_MyAccount(WebDriver driver){
return driver.findElement(By.id("clickhere"));
}
据我所知,使用工厂我们在执行脚本之前获取网页的所有元素,从第二点开始,它在脚本执行时查找元素,如果我错了则纠正我。
现在,我们应该使用哪一个?哪个是最好的?这两个有什么区别吗?这两个有什么优势和劣势?
我很感激您的意见......
答案 0 :(得分:2)
PageFactory是Selenium提供的一种干净的编码解决方案,用于支持页面对象模型。不,它在执行之前并没有获得所有Web元素,因为它只提供透明代理,而不是Web元素的具体实例。因此,当您第一次对元素执行某些操作时,您将获得实际实例的全新副本,而不是之前的任何内容。所以在这方面,PageFactory并没有处于劣势。
与findElement()
相比,PageFactory的唯一缺点是您无法通过Web元素的WrappedDriver
属性获取Web驱动程序,因此您必须自己跟踪驱动程序实例。但除此之外,PageFactory是一种实现POM的简洁,干净的方式,应尽可能使用。