Переключение на первую вкладку с помощью Selenium Web Driver с Java - PullRequest
1 голос
/ 28 мая 2020

Используя веб-драйвер selenium с java, я пытаюсь автоматизировать функциональность, при которой я нажимаю ссылку, и открывается новая вкладка. Я хочу написать глобальный метод для первой вкладки, который при вызове в основном тестовом классе переключается на вторую вкладку. У меня есть отдельный метод для выполнения утверждений на второй вкладке после завершения утверждений. Я хочу написать еще один глобальный метод, который при вызове закрывает вторую вкладку, переключается обратно на первую и возобновляет тесты в первом окне.

Я написал следующие методы и тесты:

Основной тест:

@Test(enabled = true, dataProvider = "TestThis", description = "ClickThere", groups = {"hello" })

public void AttributeValidationOnHelpPage(TestData testData, String Id, String TableName) {

        menu.switch(Id);
        data = menu.clickData();
        data.selectNoneDateRange();
        TablePage = data.openTable(TableName);
        TablePage.clickAttTab();
        menuPage.clickOnHelpPage();

        // This method, when called will switch to second tab.
         helpPage = menu.switcToHelpPage();

        // After swicthing below is the assertions i want to do on the second tab.

        Assert.assertTrue(driver.getCurrentUrl().contains("Second page Url."));
        String actualValue = helpOnThisPage.getRefTableAttributes();
        Assert.assertEquals(actualValue, "Reference Table Attributes", "Reference Table Attributes Missing");

        // This method, will close the second tab and switches back to first tab and resumes the test.
        helpPage.switchBackTOMainApplication();

    }


    Global Method for Swicthing to second tab:

    public HelpPage switchToHelpPage() {
        String originalHandle = driver.getWindowHandle();
        try {
            TimeUnit.SECONDS.sleep(8);
        } catch (InterruptedException ignore) {
        }
        wait.until(ExpectedConditions.documentReady());
        wait.until(ExpectedConditions.isNotLoading());
        for (String handle : driver.getWindowHandles()) {
            if (!handle.equals(originalHandle)) {
                driver.switchTo().window(handle);
            }
        }
        return new HelpPage(driver);
    }


    Global Method for closing the second tab and swicthing back to first tab.

    public boolean switchBackTOMainApplication() {
        boolean isValid = false;
        String originalHandle = driver.getWindowHandle();
        for (String handle : driver.getWindowHandles()) {
            if (!handle.equals(originalHandle)) {
                driver.switchTo().window(handle);
            }
        }
        driver.close();
        driver.switchTo().window(originalHandle);
        return isValid;
    }

Вот проблема, с которой я столкнулся. Когда вызывается метод helpPage.switchBackTOMainApplication (), он закрывает первую вкладку, а не переключается на нее. Есть ли какие-либо изменения, которые мне нужно сделать, чтобы закрыть вторую вкладку и продолжить тесты на первой вкладке.

Ответы [ 2 ]

0 голосов
/ 30 мая 2020

Когда вы нажимаете на ссылку, вы должны переключиться на открытую вкладку и выполнить проверку

public void switchToNextTab() {
        ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
        driver.switchTo().window(tab.get(1));
    }

После этого вы должны вернуться на свою главную вкладку

public void switchTomainTab() {
    ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
    driver.switchTo().window(tab.get(0));
}

Если вам нужно закрыть открытую вкладку, а затем вернуться на главную вкладку, используйте это

public void closeTabAndReturn() {
        driver.close();
        ArrayList<String> tab = new ArrayList<>(driver.getWindowHandles());
        driver.switchTo().window(tab.get(0));
    }
0 голосов
/ 28 мая 2020

Переменная originalHandle в switchBackTOMainApplication () имеет дескриптор для второй вкладки, поскольку go возврат был выполнен со второй вкладкой в ​​качестве текущего окна. Код можно изменить как: -

public boolean switchBackTOMainApplication() {
    boolean isValid = false;
    String handleToClose = driver.getWindowHandle();
    String mainHandle;
    for (String handle : driver.getWindowHandles()) {
        if (!handle.equals(handleToClose)) {
            mainHandle=handle;
        }
    }
    driver.close();
    driver.switchTo().window(mainHandle);
    return isValid;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...