登录后,当涉及到POP和主页时,我遇到了一个概念性问题。我有LoginPageTest
,我在其中注册了一个新用户并登录,它将我重定向到主页面。我如何“重定向”到?
例如当MainPageTest
断言完成时,registerNewUser()
在selenium优雅,所以我可以继续测试主页?
由于我们不知道确切的页面,我会尝试抽象地描述它。
首先,您可以创建一个LoginPage
页面对象,其中包含使用login注册新用户的方法,并将用户登录到应用程序。
我们假设这个Page对象看起来像这样:
public class LoginPage {
private WebDriver driver;
@FindBy(id = "registerBtn")
private WebElement registerButton;
@FindBy(id = "username")
private WebElement usernameTextField;
@FindBy(id = "password")
private WebElement passwordTextField;
@FindBy(id = "formSubmit")
private WebElement submitButton;
public LoginPage(WebDriver driver) {
this.driver = driver;
PageFactory.initElements(driver, this);
}
}
我们创建了一个在此页面对象中注册用户的方法
public void registerUser(String login, String password) {
registerButton.click();
usernameTextField.sendKeys(login);
passwordTextField.sendKeys(password);
submitButton.click();
}
现在,让我们为Home / Main页面创建一个PageObject。
public class HomePage {
@FindBy(id = "navigation")
private WebElement mainMenu;
public HomePage(WebDriver driver) {
PageFactory.initElements(driver, this);
}
public void navigateTo(String linkText) {
mainMenu.findElement(By.linkText(linkText)).click();
}
}
现在,e有2个PageObjects,我们想在用户注册后返回HomePage
页面对象。
为了做到这一点,我们只需要修改registerUser
方法来返回主页。
像这样:
public HomePage registerUser(String login, String password) {
registerButton.click();
usernameTextField.sendKeys(login);
passwordTextField.sendKeys(password);
submitButton.click();
return new HomePage(driver);
}
现在,我们可以在测试中使用它。
例:
@Test
public void test() {
LoginPage loginPage = new LoginPage();
HomePage homePage = loginPage.registerUser("Fenio", "ItsASecret");
homePage.navigateTo("Contact Us");
}
或者我们可以使用链接方法:
public void test() {
new LoginPage()
.registerUser("Fenio", "ItsASecret")
.navigateTo("Contact Us");
}