在多个子弹出窗口之间切换控制
Switching control between multiple child popups
我有一个父窗口,它只有登录字段,我使用存储了它的控件
String parentWindow= idriver.getWindowHandle();
当输入登录凭据时,一个新的弹出窗口(比如"弹出窗口a")打开,我的应用程序在其中运行
for (String handle1 : idriver.getWindowHandles()) {
idriver.switchTo().window(handle1);
}
现在,当我点击弹出窗口a中的一个按钮时,弹出窗口打开(比如"弹出窗口B"),我再次使用:
for (String handle1 : idriver.getWindowHandles()) {
idriver.switchTo().window(handle1);
}
并且控制被转移到该弹出窗口B.
现在的问题是,我想切换到一个弹出窗口C,但从父窗口切换到弹出窗口a,然后从弹出窗口a切换到弹出菜单B的代码不起作用。
控件保留在弹出窗口B上,不会转移到窗口C。请帮助。我正在使用Java、selenium、Win 8、IE 10。
我认为idriver.getWindowHandles()
是您的父窗口。。。您需要排除已存在的窗口。
public String popupHandle(List<String> existingWindowHandles) {
String popupHandle = null;
Set<String> windowHandles = driver.getWindowHandles();
for (String handle : windowHandles) {
for (String existingWindowHandle : existingWindowHandles) {
if (!handle.equals(existingWindowHandle)) {
popupHandle = handle;
break;
}
}
}
return popupHandle;
}
使用:
List<String> ignoreWindows = new ArrayList<String>();
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);
我想这会对你有所帮助,祝你好运。附言:我没有试过,对不起,我几乎没有硬件可以试。
我使用了以下内容,它对我有效:
`String windowTitle = "Popup C";
Set<String> handles = idriver.getWindowHandles();
for (String window : handles) {
Thread.sleep(200);
idriver.switchTo().window(window);
Set<String> 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;
}
}
}`
如果有人有更好的建议,请随时补充。感谢
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- JS编译器/包管理器,用于版本控制
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- d3中堆栈函数和嵌套函数之间的差异
- JQuery:在页面之间滑动
- 三星智能电视应用程序;Brightcove示例应用程序远程控制问题
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 操作放置在画布上的元素之间的连接
- 在多个子弹出窗口之间切换控制
- 控制结构php和控制结构javascript之间的差异
- 什么's在节点控制台中使用require和在html中使用script标记之间的区别
- 版本控制:如何控制不同环境之间的CSS和js压缩/缩小版本
- 如何控制条形之间的间距/边距