Как обработать новое окно в Selenium WebDriver с помощью Java?
Вот мой код:
driver.findElement(By.id("ImageButton5")).click();
//Thread.sleep(3000);
String winHandleBefore = driver.getWindowHandle();
driver.switchTo().window(winHandleBefore);
driver.findElement(By.id("txtEnterCptCode")).sendKeys("99219");
Теперь у меня есть следующая ошибка:
Исключение в потоке" main " org.опенка.селен.NoSuchElementException: Не удалось найти элемент с id = = txtEnterCptCode (предупреждение: сервер не предоставил никакой информации о stacktrace) Длительность команды или тайм-аут: 404 миллисекунды.
Есть идеи?
2 ответа:
Похоже, что вы на самом деле не переключаетесь ни на одно новое окно. Предполагается, что вы получите дескриптор окна вашего исходного окна, сохраните его, затем получите дескриптор окна нового окна и переключитесь на него. Как только вы закончите с новым окном, вам нужно закрыть его, а затем переключиться обратно на исходный дескриптор окна. Смотрите мой пример ниже:
То есть
String parentHandle = driver.getWindowHandle(); // get the current window handle driver.findElement(By.xpath("//*[@id='someXpath']")).click(); // click some link that opens a new window for (String winHandle : driver.getWindowHandles()) { driver.switchTo().window(winHandle); // switch focus of WebDriver to the next found window handle (that's your newly opened window) } //code to do something on new window driver.close(); // close newly opened window when done with it driver.switchTo().window(parentHandle); // switch back to the original window