как передать эту страницу как объект на следующую страницу в pom? - PullRequest
0 голосов
/ 25 апреля 2019

Как передать эту страницу входа в качестве объекта на следующую страницу (т. Е. На страницу панели инструментов) в объектной модели страницы?

Я устал от оператора 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();
    }
}

Мне нужно вернуть этот LoginPage как объект в класс DashBoard, чтобы после входа в систему был поток непрерывности программы.

1 Ответ

1 голос
/ 25 апреля 2019

В вашей функции 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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...