@findby 的访问修饰符应该是 private 还是 public?

3

我一直在使用私有访问修饰符来定位通过@FindBy找到的Web元素。例如:

@FindBy(id="signin")
private WebElement loginButton;

然后我将使用getter和setter暴露这个Web Element。但是我在某个地方看到说,在使用@FindBy时不需要使用getter和setter,因为它内部具有私有访问修饰符。这是正确的吗?

2个回答

2
在Java中,你其实没有getter和setter方法,所以最好将所有元素设置为私有的。然后,用叫做getter、setter或者其他名称的方法包装它们。
如果你在处理按钮,它不需要任何值,因此不需要setter。在这种情况下,最好将方法命名为loginButton(),并使用pageClass.loginButton().click()调用它。
但是,如果你有一个字段,并且想要获取它的值并且设置它们,那么就创建两个方法,分别命名为getFieldValue()和setFieldValue()。
之所以更好地封装私有字段,是因为你可以对要设置到字段中的数据设置限制,并且可以安全地点击按钮(在点击后等待页面加载和ajax)。

1

因为它在内部具有私有访问修饰符。这是正确的吗?

那不正确。

这取决于您希望如何访问按钮。

您更喜欢用户使用

pageClass.loginButton.click()

或者

pageClass.getLoginButton().click()

如何处理由你决定。 @FindBy 只是一个注解,它可以使用相同的值进行实例化,而不受其访问修饰符的影响。


明白了。请告诉我两种方法中哪一种更好,以Java最佳实践为准:pageClass.loginButton.click() 或者 pageClass.getLoginButton().click() - Jasvinder Singh Chugh
我会说 pageClass.loginButton.click()。主要是因为维护方便。当页面中的元素被删除时,您不需要担心getter和setter。如果使用getter和setter,可能会出现维护噩梦。 "嘿,我有这个WebElement,为什么不能使用get*()?哦...因为它没有getter" :) - ddavison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接