处理Selenium中的二级儿童窗口

时间:2014-01-31 07:32:24

标签: java selenium-webdriver

我有一个包含多个弹出窗口的应用程序。我点击一个按钮,弹出一个窗口(比如title="Child1")。我能够在这个弹出窗口中工作。当我点击child1窗口中的按钮时,会打开第三个弹出窗口(例如grandchild1)。所以它就像:

MainWindow<----Child1<---Grandchild1

Selenium无法识别孙子窗口。

win=driver.getWindowHandles().toArray();

此代码也只显示2个窗口。

selenium.selectWindow("Grandchild1");

此代码也会抛出错误。对此有何帮助?

1 个答案:

答案 0 :(得分:0)

使用以下流程执行操作以处理WebDriver中的多个窗口。

String mainWindowHanhle=driver.getWindowHandle();

//Do/Click something to open child window

Set<String> childParentHandles=driver.getWindowHandles();

childParentHandles.remove(mainWindowHanhle);   //removing main window handle from Set

driver.switchTo().window((String) childParentHandles.toArray()[0]); //switching the control to child window

//Do/Click something in Child window to open grand_child window

Set<String> grandChild_Child_ParentHandles=driver.getWindowHandles();

grandChild_Child_ParentHandles.remove(mainWindowHanhle);
grandChild_Child_ParentHandles.remove(childParentHandles);  //remove parent,child window handle from set

//Now switch the control to grand_Child window
driver.switchTo().window((String) grandChild_Child_ParentHandles.toArray()[0]);