在页面对象模型中,为什么我们使用 Webelements 而不是字符串作为类变量?



简单地说:在实现POM框架时,我们让Pagefactory初始化页面对象中的所有元素。为什么我们要这样做,而不是将 xpath/css 选择器存储为字符串并根据需要调用它们?

前任:

@FindBy(xpath = "//Button[text()='Add and Edit']")
@CacheLookup
private WebElement addAndEdit;

private String addAndEdit;

这不是作为页面对象模型的一部分定义的,这是由PageFactory定义的,它是初始化页面对象中元素的帮助程序类。其目的是设置一个代理,以便元素的位置策略由@FindBy定义,您可以引用WebElement,当您使用引用时,它会为您查找它。

如果要存储定位器,请不要存储字符串...改为存储By定位器。它具有定位器类型的额外信息,例如 By.id,By.cssSelector等。我认为这是更干净的方法,可以防止您以某种方式确定字符串变量的定位器类型。这是我在我编写和/或维护的所有Selenium项目中使用的方法。

根据硒的贡献者,不应该使用PageFactory。请看首席提交者西蒙·斯图尔特(Simon Stewart)的yt视频,说明不要使用它(27:26)等等,以及为什么。该链接开始了导致他对PageFactory的评论的部分。

最新更新