在多个子弹出窗口之间切换控制

我有一个父窗口,它只有登录字段,我已经存储了它的控件:

String parentWindow= idriver.getWindowHandle();

当输入登录凭证时,会打开一个新的弹出窗口(比如说“弹出窗口A”),我的应用程序在其中运行。我已使用以下命令将控件切换到此“弹出窗口A”:

for (String handle1 : idriver.getWindowHandles()) { idriver.switchTo().window(handle1); }

现在,当我点击此弹出窗口A中的一个按钮时,会打开一个弹出窗口(比如“Popup B”),我再次使用:

for (String handle1 : idriver.getWindowHandles()) { idriver.switchTo().window(handle1); }

并将控件转移到此弹出窗口B.

问题是现在我想要切换到弹出窗口C,但是从父窗口切换到弹出窗口A然后从弹出窗口A切换到弹出窗口B的代码不起作用。

控件保留在弹出窗口B上,不会转移到窗口C.请帮忙。 我使用的是Java,selenium,W​​in 8,IE 10。

我认为在idriver.getWindowHandles()是你的父窗口……你需要排除现有的窗口。

  public String popupHandle(List existingWindowHandles) { String popupHandle = null; Set windowHandles = driver.getWindowHandles(); for (String handle : windowHandles) { for (String existingWindowHandle : existingWindowHandles) { if (!handle.equals(existingWindowHandle)) { popupHandle = handle; break; } } } return popupHandle; } 

使用:

 List ignoreWindows = new ArrayList(); String parentWindow = idriver.getWindowHandle(); ignoreWindows.add(parentWindow) String popUpWindow = popupHandle(ignoreWindows); idriver.switchTo().window(popUpWindow); String currentWindow = idriver.getWindowHandle(); ignoreWindows.add(currentWindow); // doing your code // new popup appears popUpWindow = popupHandle(ignoreWindows); idriver.switchTo().window(popUpWindow); 

我想这会对你有所帮助,祝你好运。 PS我没有尝试对不起,我没有附近的硬件尝试它。

我使用了以下内容,它对我有用:

 `String windowTitle = "Popup C"; Set handles = idriver.getWindowHandles(); for (String window : handles) { Thread.sleep(200); idriver.switchTo().window(window); Set mhandles = idriver.getWindowHandles(); for (String mwindow : mhandles) { idriver.switchTo().window(mwindow); System.out.println("Im in"); Thread.sleep(200); if (idriver.getTitle().contains(windowTitle)) { idriver.switchTo().window(mwindow); System.out.println(windowTitle); break; } } }` 

如果有人有更好的建议,请随时添加。 谢谢