В вашей функции submit()
вы возвращаете функцию submit()
, но ее тип возврата - WebElement
.
Если вы пытаетесь передать дескриптор на следующую страницу, вы должны вернуть этот тип объекта и передать дескриптор драйвера.
Передача объекта другой страницы:
Обновите свой метод submit()
в LoginPage
до следующего:
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
На мой взгляд, лучше не пропускатьдругой объект страницы из класса действий объекта страницы.Попробуйте запустить объекты страницы в вашем тесте и использовать его оттуда.
Для этого просто не возвращайте объект DashboardPage из метода submit.
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());
}