【发布时间】:2017-12-21 09:41:04
【问题描述】:
我有,例如“注册页面”作为要实现的页面对象之一:
public class SignUpPage {
WebDriver driver;
public SignUpPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
我想从这个页面添加(查找)元素(使用@FindBy),这将在其他方法中使用:
public class SignUpPage {
WebDriver driver;
public SignUpPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy (id = "register-email")
private WebElement emailField;
@FindBy (id = "register-confirm-email")
private WebElement confirmEmailField;
@FindBy (id = "register-password")
private WebElement passwordField;
public SignUpPage typeEmail(String email) {
emailField.sendKeys(email);
return this;
}
public SignUpPage typeConfirmEmail(String email) {
confirmEmailField.sendKeys(email);
return this;
}
}
有没有更好的方法来组织 @FindBy 注释?例如不要重复这么多次,因为我们有这么多的元素。
【问题讨论】:
-
感谢下面给出的所有建议,伙计们。我会按工作顺序尝试一切,然后选择答案。
-
你这样做的方式绝对没问题。您确实需要定义每个元素,因为每个元素都有唯一的 id/选择器/您选择通过什么来查找它。减少重复的唯一方法是在不同的类中重用相同的元素。在这种情况下,您可以将它们存储在父类或某个静态类中。
-
@Dmitry 这是一个简单的框架,我用它来将多个但相似的元素“装箱”到一个变量中 - stackoverflow.com/questions/47195901/…。
标签: java selenium selenium-webdriver