关闭。这个问题是基于意见的。它目前不接受答案。
**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
三年前关门了。
改进这个问题
我正在使用cucumber和selenium框架进行ui自动化测试,希望了解使用以下方法捕获WebElement之间的区别:
@FindBy (org.openqa.selenium.support.FindBy)
与
WebDriver.findElement(className/xpath)
我的理解(可能有缺陷)是:
@被发现者
pro:存储对元素的引用,因此您只需要在类的顶部定义它,而不需要在使用它的任何地方(使用webdriver.findelement)
con:在使用引用之前,需要“刷新”元素的值 PageFactory.initElements(WebDriver, ClassName.class);
否则,该元素可能是过时的,或者是自刷新后的页面中的上一个值
webdriver.findelement(类名/xpath)
pro:您知道您总是从指定的类名或xpath中获取最新和最新的元素
缺点:在任何地方都需要定义,当经常定义相同的类名或xpath时,代码会变得混乱
如能帮助澄清这些分歧,我们将不胜感激。
1条答案
按热度按时间jbose2ul1#
PageFactory
在使用引用之前不需要刷新。它是一个代理。你应该可以在google上找到一些关于它工作原理的详细资料,但是selenium贡献者建议不要使用PageFactory
..findElement()
不需要在任何地方定义。你可以很容易地定义一个By
将定位器放在类的顶部,并在整个类中重用该变量。