我使用Cucumber和Selenium框架进行UI自动化测试,并希望了解使用以下方法捕获WebElements之间的差异:
@FindBy (org.openqa.selenium.support.FindBy)
vs
WebDriver.findElement(className/xpath)
我的理解(可能存在缺陷)是:
@FindBy
Pro:存储对元素的引用,因此您只需要在类的顶部而不是在使用它的任何地方定义它(使用WebDriver.findElement)
Con:元素的值需要刷新"在使用PageFactory.initElements(WebDriver, ClassName.class);
引用之前,否则该元素可能是陈旧的,或者是从已刷新的页面开始的先前值
WebDriver.findElement(className / xpath)
Pro:您知道您始终从className或指定的xpath获取最新的当前元素
Con:需要在任何地方定义使用,当经常定义相同的className或xpath时,代码会变得混乱
非常感谢任何澄清这些差异的帮助。
答案 0 :(得分:2)
PageFactory
。这是代理人。您应该能够谷歌并找到一些关于它如何工作的细节的参考,但Selenium贡献者建议不要使用PageFactory
。
.findElement()
不需要在任何地方定义使用。您可以在类的顶部轻松定义一个By
定位器,并在整个类中重用该变量。