Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Selenium中处理二级子窗口_Java_Selenium Webdriver - Fatal编程技术网

Java 在Selenium中处理二级子窗口

Java 在Selenium中处理二级子窗口,java,selenium-webdriver,Java,Selenium Webdriver,我有一个包含多个弹出窗口的应用程序。我点击一个按钮,弹出窗口打开(比如title=“Child1”)。我可以在这个弹出窗口上工作。当我单击child1窗口中的按钮时,会打开第三个弹出窗口(例如1)。所以它是这样的: MainWindow<----Child1<---Grandchild1 此代码也仅显示2个窗口 selenium.selectWindow("Grandchild1"); 这段代码也会抛出一个错误。这方面有什么帮助吗?使用以下流程执行操作,以处理WebDriver中

我有一个包含多个弹出窗口的应用程序。我点击一个按钮,弹出窗口打开(比如
title=“Child1”
)。我可以在这个弹出窗口上工作。当我单击child1窗口中的按钮时,会打开第三个弹出窗口(例如
1
)。所以它是这样的:

MainWindow<----Child1<---Grandchild1
此代码也仅显示2个窗口

selenium.selectWindow("Grandchild1");

这段代码也会抛出一个错误。这方面有什么帮助吗?

使用以下流程执行操作,以处理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]);
String mainWindowHanhle=driver.getWindowHandle();
//执行/单击某些操作以打开子窗口
设置childParentHandles=driver.getWindowHandles();
childParentHandles.remove(主窗口HANHLE)//从集合中卸下主窗把手
driver.switchTo().window((字符串)childParentHandles.toArray()[0])//将控件切换到子窗口
//在子窗口中执行/单击某项操作以打开grand_子窗口
设置孙子女父句柄=driver.getWindowHandles();
孙子女父句柄。删除(主窗口hanhle);
孙辈子辈父辈句柄。删除(子辈父辈句柄)//从集合中删除父、子窗口句柄
//现在将控件切换到grand_子窗口
driver.switchTo().window((字符串)孙子女父句柄.toArray()[0]);

你能粘贴有问题的错误吗?嗨,这似乎不起作用。driver.switchTo().window((字符串)childParentHandles.toArray()[0]);始终指向主窗口。我必须对子窗口使用toArray()[1],在使用此驱动程序之前,孙辈仍然无法识别。switch to().window((字符串)childParentHandles.toArray()[0]);我已使用childParentHandles从集合中删除主窗口句柄。删除(mainWindowHanhle);。因此,它将只返回子窗口句柄。
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]);