为什么我们在Selenium Webdriver中的@FindBy之后声明webelement为Private

时间:2017-03-20 18:28:48

标签: selenium

为什么我们在webelement中的FindBy之后创建Pageobjects时将Private声明为Selenium Webdriver?如果我们声明为Public而不是Private,该怎么办? 任何人都可以回答这个问题。

@FindBy(id = "uniqName_34_0")
private WebElement username;

1 个答案:

答案 0 :(得分:0)

在您的示例中,HomePage以外的任何类是否都可以直接使用username WebElement

我认为你也不应该使用public访问者方法,特别是如果你正在使用Page Object Pattern

您的测试脚本不应与WebElements直接互动,而是与PageObjects互动,负责了解如何在其页面上执行功能。因此,您的HomePage可能有一个如下所示的方法:

public HomePage enterUsername(string user)
{
    username.sendKeys(user);
    return this;
}

这样,您的测试脚本并不关心如何与页面进行交互,它只担心需要输入用户名。为了防止您在测试脚本中使用WebElements,请不要通过公共字段或访问方法公开它们。

如果您的protected架构中有一些继承,则可以考虑根据需要标记它们PageObject,但除此之外,您的WebElement应该属于它们所属的页面。