首页 新闻 会员 周边

selenium+java自动化

0
悬赏园豆:10 [已解决问题] 解决于 2017-12-13 17:49

问个自动化方面的问题
正常流程:点击第一个页面某个按钮跳出弹窗,点击弹窗的“校验”按钮,跳转到新页面,直接关闭新页面,再去第一个页面进行元素的定位操作;
代码实现不了关闭第二个页面,而是直接driver关闭了,也定位不到第一个页面的元素,该怎么弄。

眈眈逐逐的主页 眈眈逐逐 | 初学一级 | 园豆:185
提问于:2017-12-12 15:09
< >
分享
最佳答案
0

一般来说 跳转到新页面用如下方法:

String currentWindow = driver.getWindowHandle();
            Set<String> handles = driver.getWindowHandles();
            Iterator<String> it = handles.iterator();
            while (it.hasNext()) {
                String handle = it.next();
                if (currentWindow.equals(handle))
                    continue;
                driver.switchTo().window(handle);
            }

如果想回到以前的窗口定位元素,再调用一下switchTo().window方法,传入之前窗口句柄即可。

收获园豆:10
ycyzharry | 高人七级 |园豆:25651 | 2017-12-12 16:02

不太会用。。。新的页面怎么关闭呢

眈眈逐逐 | 园豆:185 (初学一级) | 2017-12-12 20:09

@眈眈逐逐: driver.close()

ycyzharry | 园豆:25651 (高人七级) | 2017-12-13 09:06

@ycyzharry: 这个会把第一个页面关闭。新页面不会,是不是没切换到新页面的框架啊

眈眈逐逐 | 园豆:185 (初学一级) | 2017-12-13 09:31

@眈眈逐逐: driver要指向新窗口句柄 参考 https://www.cnblogs.com/sjqq/p/7147727.html

ycyzharry | 园豆:25651 (高人七级) | 2017-12-13 09:36

@ycyzharry: 

眈眈逐逐 | 园豆:185 (初学一级) | 2017-12-13 10:32

String currentWindow = driver.getWindowHandle();//获取当前窗口句柄
Set<String> handles = driver.getWindowHandles();//获取所有窗口句柄(A+B)
Iterator<String> it = handles.iterator();//判断是否等于A句柄,是就继续循环,否则就跳出去,并关闭窗口。
while (it.hasNext()) {
String handle = it.next();
if (currentWindow.equals(handle))
continue;
driver.switchTo().window(handle);
driver.close();//关闭弹出页面
driver.switchTo().window(currentWindow);//转到A窗口
}

 

 

谢谢你,我用这个方法解决了 ^_^

眈眈逐逐 | 园豆:185 (初学一级) | 2017-12-13 10:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册