为什么我们在webelement
中的FindBy之后创建Pageobjects时将Private
声明为Selenium Webdriver
?如果我们声明为Public
而不是Private
,该怎么办?
任何人都可以回答这个问题。
@FindBy(id = "uniqName_34_0")
private WebElement username;
答案 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
应该属于它们所属的页面。