Как получить дескриптор браузера для нового открытого окна IE с помощью Selenium Java - PullRequest
0 голосов
/ 04 марта 2020

Я работаю над автоматизацией тестирования с использованием Selenium java. Для моего сценария сначала откройте страницу входа в систему и после предоставления учетных данных и нажмите кнопку «Вход», текущий браузер (со страницей входа) закроется и откроется новое окно IE с домашней страницей. В коде java я получаю драйвер с URL страницы входа в систему и оттуда, предоставляя имя пользователя и pwd, затем нажимаю на страницу входа в систему, работающую нормально, но после этого, когда страница закрывается и открывается новое окно IE, пока я пытаюсь работать над На домашней странице я получаю noSuchWindowException или Null handle, как эти. Можете ли вы помочь мне получить новый дескриптор окна для домашней страницы?

Мои коды указаны ниже:

...
System.setProperty("webdriver.ie.driver", pathToDriver);
driver = new InternetExplorerDriver();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("<Login Page URL>");

driver.findElement(By.id("userName")).sendKeys("Admin");
driver.findElement(By.id("password")).sendKeys("Admin");
driver.findElement(By.className("loginButton")).click();

driver.get("<Home Page URL>");
...

Спасибо,

Surodip

Ответы [ 3 ]

0 голосов
/ 09 марта 2020

Более простое решение может быть таким:

driver.SwitchTo().Window(driver.WindowHandles.Last());

.Last () просто переключится на последнее открытое окно, которое должно быть тем, которое только что открылось, когда вы щелкнули ссылку.

0 голосов
/ 09 марта 2020

Selenium driver.getWindowHandles () вернет Set, и нет метода Set для получения последнего дескриптора окна, но TreeSet имеет, поэтому преобразуйте и используйте его метод last () для использования.

String lastWindowHandle = new TreeSet<>(driver.getWindowHandles()).last()
driver.SwitchTo().Window(lastWindowHandle);
0 голосов
/ 04 марта 2020

Вам необходимо проверить, завершился ли переход со страницы входа на домашнюю страницу в течение времени, пока была вызвана операция по получению дескриптора домашней страницы. Возможно, вам придется отложить вызов с помощью функции «Ожидание».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...