2013-09-24 3 views
0

У меня есть тестовый файл для обработки всплывающего окна, но элемент управления не будет всплывать. Он отображает getTitle основного окна вместо всплывающего окна. вы можете пройти ниже кода.Как обрабатывать всплывающее окно для доступа к поп-элементам

@Test 
public void testText1() throws Exception { 
    driver.get("http://www.hdfcbank.com"); 
    Thread.sleep(8000); 
    driver.findElement(By.xpath(".//*[@id='loginsubmit']")).click(); 

    String popupHandle = driver.getWindowHandle(); 
    WebDriver popup; 

    popup = driver.switchTo().window(popupHandle); 
    System.out.println(popup.getTitle()); 
    if (popup.getTitle().equals("netbanking")) { 
     System.out.println("I am going to access the elements of popup"); 
     driver.findElement(By.xpath(".//*[@id='wrapper']/div[6]/a/img")).click(); 
    } else { 
     System.out.println("Worth Trying try harder to get success"); 
     // 
    } 

} 

Выход: {d0f39d30-49e7-4203-b9ef-10380fbfcb5e} HDFC Bank: Личные банковские услуги Я собираюсь открыть элементы всплывающего Исключение в потоке "основной" org.openqa.selenium .NoSuchElementException: Не удается найти элемент: {"method": "xpath", "selector": ".//*[@ id = 'wrapper']/div [6]/a/img"} Длительность или таймаут команды : 30.15 секунд

+0

Hi @Satendra Что вы подразумеваете под всплывающим окном? Появляется ли это окно java-скрипта или html? Если он отображается html, вам не нужно следовать методу, который вы создали. Это прямолинейный процесс. Дайте мне знать, если вам нужна дополнительная помощь. – Vinay

ответ

2

Вы на правильном пути. Метод driver.getWindowHandle() возвращает только дескриптор текущего окна, который будет вашим основным окном. Если откроется другое всплывающее окно, вам нужно будет позвонить Set<String> handles = driver.getWindowHandles(), чтобы вернуть список всех доступных ручек. Затем вы можете позвонить driver.switchTo().window(handles.get(handles.size() - 1)). Это переключится на последний указанный (новейший) дескриптор окна.

Вам также не нужно объявлять новый объект WebDriver. Вызывая switchTo(), вы переносите фокус водителя в новое окно. Обязательно сохраните ссылку на дескриптор главного окна перед тем, как сделать переключатель, чтобы впоследствии вернуться в главное окно.

String mainHandle = driver.getWindowHandle(); 
String[] handles = driver.getWindowHandles().toArray(new String[0]); 
driver.switchTo().window(handles[handles.length - 1]); 
... 
driver.close(); //close the popup window 
driver.switchTo().window(mainHandle); 
+0

handles.get (handleles.size() - 1) отображает ошибку компилятора. требуется значное значение – SATENDRA

+0

не может найти символ символа: метод Get (интермедиат) местоположения: переменная ручки типа java.util.Set ---- (Alt-Enter шоу подсказки) – SATENDRA

+0

Извините, я пересмотрел код примера, чтобы сначала преобразовать в массив, чтобы можно было восстановить последний элемент. – eldon111

Смежные вопросы