@findby的访问修饰符应该是私有的还是公共的?

时间:2015-08-11 13:55:48

标签: java selenium selenium-webdriver

我一直在使用私人访问修饰符来查找位于div { width: 80px; height: 80px; border: 2px solid red; justify-content: center; display: flex; flex-direction: row; } img { flex: 1; height: 100%; } 的网络元素。 e.g。

@FindBy

然后我会使用getter和setter公开这个web元素。 但是,我在某处读到,getter和setter不需要与@FindBy(id="signin") private WebElement loginButton; 一起使用,因为它内部有一个私有访问修饰符。这是对的吗?

2 个答案:

答案 0 :(得分:2)

因为在Java中,你实际上没有吸气剂和制定者,所以你最好将所有元素设为私有。

然后将它们包装在您称之为getter,setter或其他方式的方法中。

如果您使用按钮,它将永远不需要值,因此您不需要设置。在这种情况下,最好为您的方法命名:loginButton(); 并将其用作pageClass.loginButton()。click();

但是如果你有一个字段并且想要从中获取值并设置它们,那么创建两个方法并将它们称为getFieldValue();和setFieldlValue();

为什么更好地包装您的私人字段是因为您可以在数据中设置限制以设置为您的字段,并且您可以安全地点击按钮(等待加载页面和ajax在点击之后。

答案 1 :(得分:1)

  

因为它内部有一个私有访问修饰符。这是对的吗?

这不正确。

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

您希望您的用户使用

吗?
pageClass.loginButton.click()

pageClass.getLoginButton().click()

由你决定你想要的是什么。 @FindBy只是一个注释,无论其访问修饰符如何,都使用相同的值进行实例化。