Как обработать новое окно в 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 14

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

У меня есть служебный метод для переключения в требуемое окно, как показано ниже

public class Utility 
{
    public static WebDriver