使用@FindBy与WebDriver.findElement之间的优缺点

时间:2017-10-31 19:53:26

标签: java selenium xpath

我使用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时,代码会变得混乱

非常感谢任何澄清这些差异的帮助。

1 个答案:

答案 0 :(得分:2)

在使用引用之前,不需要刷新

PageFactory。这是代理人。您应该能够谷歌并找到一些关于它如何工作的细节的参考,但Selenium贡献者建议不要使用PageFactory

.findElement()不需要在任何地方定义使用。您可以在类的顶部轻松定义一个By定位器,并在整个类中重用该变量。