如何将此页面作为对象传递给 pom 中的下一页?
how to pass this page as object to the next page in pom?
如何将此登录页面作为对象传递给页面对象模型中的下一页(即仪表板页面)?
我已经厌倦了 return 语句,但它不起作用。
public class LoginPage {
WebDriver driver;
public void LPage(WebDriver driver) {
this.driver=driver;
}
By UserName = By.id("username");
By Password = By.id("pass");
By Login = By.xpath("//*[@type='submit']");
public WebElement un() {
return driver.findElement(UserName);
}
public WebElement pwd() {
return driver.findElement(Password);
}
public WebElement submit() {
driver.findElement(Login).click();
return submit();
}
}
我需要 return 这个 LoginPage 作为 DashBoard 的一个对象 class 这样在登录后会有一个连续的程序流。
在您的 submit()
函数中,您正在 returning submit()
函数,但它的 return 类型是 WebElement
。
如果您尝试将句柄传递到下一页,则必须执行 return 那种类型的对象并传递驱动程序句柄。
正在传递另一个页面对象:
将 LoginPage
中的 submit()
方法更新为:
public DashboardPage submit(){
driver.findElement(Login).click();
return new DashboardPage(driver);
}
在测试中,这样调用:
@Test
public void test(){
Webdriver driver = new Chromedriver();//For expample I'm using Chromedriver
driver.get("YourTestAppilcationURL");
LoginPage loginPage = new LoginPage(driver);
loginPage.un.sendKeys("username");
loginPage.pwd.sendKeys("password");
DashboardPage dashboardPage = loginPage.submit();
//Now perform tasks in the dashboardPage
}
您可以在 Selenium wiki
中阅读相关信息
在我看来,最好不要从页面对象操作中传递另一个页面对象 class。
尝试在您的测试中启动页面对象并从那里使用它。
要做到这一点,请不要 return 来自提交方法的 DashboardPage 对象。
public void submit(){
driver.findElement(Login).click();
然后在测试中使用它:
@Test
public void loginTest(Webdriver driver){
LoginPage loginPage = new LoginPage(driver);
DashboardPage dashboardPage = new DashboardPage(driver);
loginPage.submit();
Assert.AssertTrue(dashboardPage.isLoaded());
}
如何将此登录页面作为对象传递给页面对象模型中的下一页(即仪表板页面)?
我已经厌倦了 return 语句,但它不起作用。
public class LoginPage {
WebDriver driver;
public void LPage(WebDriver driver) {
this.driver=driver;
}
By UserName = By.id("username");
By Password = By.id("pass");
By Login = By.xpath("//*[@type='submit']");
public WebElement un() {
return driver.findElement(UserName);
}
public WebElement pwd() {
return driver.findElement(Password);
}
public WebElement submit() {
driver.findElement(Login).click();
return submit();
}
}
我需要 return 这个 LoginPage 作为 DashBoard 的一个对象 class 这样在登录后会有一个连续的程序流。
在您的 submit()
函数中,您正在 returning submit()
函数,但它的 return 类型是 WebElement
。
如果您尝试将句柄传递到下一页,则必须执行 return 那种类型的对象并传递驱动程序句柄。
正在传递另一个页面对象:
将 LoginPage
中的 submit()
方法更新为:
public DashboardPage submit(){
driver.findElement(Login).click();
return new DashboardPage(driver);
}
在测试中,这样调用:
@Test
public void test(){
Webdriver driver = new Chromedriver();//For expample I'm using Chromedriver
driver.get("YourTestAppilcationURL");
LoginPage loginPage = new LoginPage(driver);
loginPage.un.sendKeys("username");
loginPage.pwd.sendKeys("password");
DashboardPage dashboardPage = loginPage.submit();
//Now perform tasks in the dashboardPage
}
您可以在 Selenium wiki
中阅读相关信息在我看来,最好不要从页面对象操作中传递另一个页面对象 class。 尝试在您的测试中启动页面对象并从那里使用它。
要做到这一点,请不要 return 来自提交方法的 DashboardPage 对象。
public void submit(){
driver.findElement(Login).click();
然后在测试中使用它:
@Test
public void loginTest(Webdriver driver){
LoginPage loginPage = new LoginPage(driver);
DashboardPage dashboardPage = new DashboardPage(driver);
loginPage.submit();
Assert.AssertTrue(dashboardPage.isLoaded());
}