Используйте оператор switch для возврата разных экземпляров страницы - PullRequest
0 голосов
/ 07 октября 2019

Я немного новичок в Java и использую его с селеном. У меня есть общий объектный класс страницы, который имеет разные методы, выполняющие одну и ту же задачу, но возвращающие разные страницы в зависимости от того, как вы туда попали (т. Е. Какой метод вы вызываете). Поэтому я хочу создать один метод с оператором switch, который будет возвращать разные экземпляры страницы.

Поскольку текст заголовка на странице будет отражать путь к общей странице, я подумал, что, возможно, смогу использовать INVOICE_HEADER_IDENTIFIER в качестве значения переключателя? Просто ищу руководство и лучшую практику в этом деле.

public AccomodationInvoiceDetails searchForStudentAccomodationInvoice(String studentNo){
    assertThat(getTextFromElement(INVOICE_HEADER_IDENTIFIER).equals("Create Accommodation Invoice : Select Invoice")).isTrue();
    enterTextIntoElement(SELECT_STUDENT_FIELD_IDENTIFIER, "1990514");
    clickElement(NEXT_BUTTON_IDENTIFIER);
    waitForElementToBeDisplayed(By.id("ANSWER.TTQ.MENSYS.1."), driver, 10);
    return new AccomodationInvoiceDetails(driver);
}

public CreditNoteSelectInvoicePage searchForStudentAccomodationCreditNote(String studentNo){
    assertThat(getTextFromElement(INVOICE_HEADER_IDENTIFIER).equals("Create Accommodation Credit Note : Select Student")).isTrue();
    enterTextIntoElement(SELECT_STUDENT_FIELD_IDENTIFIER, "1990514");
    clickElement(NEXT_BUTTON_IDENTIFIER);
    waitForElementToBeDisplayed(By.id("ANSWER.TTQ.MENSYS.1."), driver, 10);
    return new CreditNoteSelectInvoicePage(driver);
}

1 Ответ

0 голосов
/ 14 октября 2019

Вы можете попробовать это:

public Object searchForStudentAccomodation(String studentNo){
        String invoiceHeader = getTextFromElement(INVOICE_HEADER_IDENTIFIER);
        switch (invoiceHeader){
            case "Create Accommodation Credit Note : Select Student" :
                commonInvoiceAction(studentNo);
                return new CreditNoteSelectInvoicePage(driver); 

            case "Create Accommodation Invoice : Select Invoice" :
                commonInvoiceAction(studentNo);
                return new AccomodationInvoiceDetails(driver);

            default :
                System.out.println("Invalid invoice header : "+invoiceHeader);
                return  null;

        }
    }

    public void commonInvoiceAction(String studentNo){
        enterTextIntoElement(SELECT_STUDENT_FIELD_IDENTIFIER, studentNo);
        clickElement(NEXT_BUTTON_IDENTIFIER);
        waitForElementToBeDisplayed(By.id("ANSWER.TTQ.MENSYS.1."), driver, 10);
    }
...