Обработка динамически изменяющегося идентификатора элемента - с использованием веб-драйвера selenium

У меня есть страница входа в систему, при нажатии кнопки входа открывается новая вкладка.

я переместил элемент управления в новое окно, используя

driver.switchTo().window("_blank");

Когда я нажимаю один Button, он открывает новое всплывающее окно (это всплывающее окно не является обычным окном, это iframe).

Я выбрал всплывающее окно, используя

driver.switchTo().frame("frameName");

Это всплывающее окно содержит список записей; каждая запись имеет отдельную опцию «выбрать» (с динамически изменяющимся идентификатором).

driver.findElement(By.xpath("//a[@id='radgrdPeople_ctl00_ctl04_lnkSelect']")).click();

При выборе записи из списка всплывающее окно закроется и страница обновится.

Теперь я хочу вернуть элемент управления в родительское окно для выполнения некоторых других действий.

Запись успешно выбрана. Но я не смог снова сфокусировать родительское окно.

Я пытался:

driver.switchTo().defaultcontent();
driver.switchTo().window("_blank");

И

driver.getWindowHandles()

Тем не менее я получаю ту же проблему.

Я не знаю, нужно ли мне использовать какой-либо исполнитель java-скрипта для обработки динамически изменяющихся идентификаторов элементов.

Не могли бы вы помочь мне в этом....

Заранее спасибо.

К. Ранджиткумар


person Ranjith    schedule 22.01.2013    source источник


Ответы (2)


В посте после нажатия кнопки входа вы использовали WindowName для переключения в новое окно. Но в проверенном решении вы использовали empty string для переключения в новое окно.

person Manigandan    schedule 22.01.2013

Вы должны сделать первое окно родительским окном

String parent=driver.getwindowhandle;
// then, set String popup to be equal to window handle of the 
// popup window
driver.switchTo().window( popup);
driver.findElement(By.id("okbutton")).click(); //assumes close of popup

Теперь, после выполнения задач во всплывающем окне, верните управление родительскому окну:

driver.switchTo().window( parent );// switch back to parent window
driver.switchTo().defaultcontent(); // reset iframe context
person coolcub    schedule 06.04.2013