Я запускаю тесты Selenium с помощью веб-драйвера.Как получить новое поведение в виде вкладок/окон в разных браузерах?
Когда я пытаюсь открыть новую вкладку или новое окно в браузере, поведение отличается от того, в каком браузере я тестирую.
Вот метод, который я использую. Код такой же для новой вкладки вместо нового окна, просто замените клавишу нажатой «t» вместо «n».
protected void logOutInAnotherTab() {
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "n");
List<String> tabs = new ArrayList<>(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
PageObject.logout(driver);
PageUtil.waitForPageLoad(driver, 3);
driver.close();
driver.switchTo().window(tabs.get(0));
}
Предполагается открыть новую вкладку/окно, переключиться на него, перейдите выхода из системы URL (который заканчивается сеанс пользователя), затем закройте вкладку/окно (переход к исходной вкладке/окне) , позволяя тестовому примеру продолжить сеанс пользователя.
Если я делаю это для вкладок, то как Firefox, так и IE возвращают только исходную вкладку, когда я вызываю driver.getWindowHandles()
, что приводит к индексу за пределами границ на следующей строке. Другими словами, новая вкладка не распознается webdriver, поэтому переход на нее не выполняется.
Если я делаю это для окон, у меня такая же проблема, но только IE страдает от этого; веб-драйвер Firefox получает оба окна просто отлично. Кроме того, IE загружает ту же страницу, что и исходное окно, вместо начальной страницы или главной страницы, что создает дополнительные проблемы.
Во всех случаях я могу заставить Chrome вести себя так, как я ожидаю.
Как я могу заставить все три из этих настольных браузеров (IE, Firefox и Chrome) вести себя одинаково, когда я имею дело с несколькими вкладками или окнами?
Или, насколько мне нужно, как открыть новую вкладку/окно во всех трех браузерах и успешно перейти к этой вкладке/окну, а затем закрыть вкладку/окно и успешно вернуться к исходному?
Это не решит мою проблему. Для IE и Firefox 'driver.getWindowHandles()' возвращает набор, содержащий только 1 элемент; оригинальная вкладка/окно. Итерация через этот набор не волшебным образом добавит другую вкладку/окно. –