我尝试使用PageFactory方法,并希望使用元素和方法来分隔类。例如,我有一个包含页面元素的类:
public class LoginPageElements extends AbstractPage {
@FindBy(id = "rwOAuthUserName")
public WebElement login;
@FindBy(id = "rwOAuthPassword")
public WebElement password;
@FindBy(id = "rwOAuthLogin")
public WebElement submit;
public LoginPageElements (WebDriver driver){
super(driver);
}
以及包含页面方法的类:
public class LoginPageSteps {
private LoginPageElements elements;
@Step
public void fillLogin(String value){
elements.login.clear();
elements.login.sendKeys(value);
}
@Step
public void fillPassword(String value){
elements.password.clear();
elements.password.sendKeys(value);
}
@Step
public void submitTheForm(String value) {
elements.submit.click();
}
在上一页我导致访问我的登录页面并初始化所有必需元素的方法:
public LoginPageElements clickLoginButton(){
loginButton.click();
return PageFactory.initElements(driver, LoginPageElements.class);
}
但问题是,我现在无法编写测试:
@BeforeTest
public void testSetUp(){
driver = DriverManager.getDriverFor("FF");
CNBLoginPage onCNBStartPage = PageFactory.
initElements(driver, CNBLoginPage.class);
onCNBStartPage.
clickLoginButton().
fillLogin(login).
由于clickLoginButton()返回LoginPageElements类,但fillLogin()在LoginPageSteps类中。
请告诉我如何正确返回元素和类?
答案 0 :(得分:0)
只需在您的AbstractPage类的构造函数中添加PageFactory.initElements(driver, this);
,就将像这样:
public AbstractPage (WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
使用此方法,您将不再需要初始化扩展了AbstractPage的PageElement或初始化扩展了AbstractPage的其他类的任何其他类。
与此相关,您的@BeforeTest
应该像:
@BeforeTest
public void testSetUp(){
driver = DriverManager.getDriverFor("FF");
LoginPageSteps steps = new LoginPageSteps(driver);
steps.clickLoginButton();
steps.fillLogin(login);