专栏首页FunTesterselenium2java 遇到有三个窗口用例的处理办法

selenium2java 遇到有三个窗口用例的处理办法

本人在学习selenium2java的时候遇到一个用例,执行完竟然有三个窗口,使用handles的办法教程只写了两个窗口的解决办法,后来我把handles全都输出出来后发现其实相当于三个窗口,再进去第三个窗口的时候,多判断一下就好了,斜面分享一下自己的经验。

 1//登录下载精品资源
 2    public static void downloadResources(WebDriver driver, boolean key) throws InterruptedException, AWTException {
 3        if (key) {
 4            loginWithTeacher(driver);
 5        } else {
 6            loginWithStudent(driver);
 7        }
 8        findElementByTextAndClick(driver, "精品资源");
 9        String homehandle = driver.getWindowHandle();
10        findElementByXpathAndClick(driver, "html/body/div[3]/ul/li[4]/a");
11        Set<String> handles = driver.getWindowHandles();
12        for (String handle : handles) {
13            if (handle.equals(homehandle) == false) {
14                driver.switchTo().window(handle);
15                output("切换到精品资源页面了!");
16                Thread.sleep(2000);
17                findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[1]/dl/dd/a[4]");
18                findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[2]/dl/dd/a[3]");
19                findElementByXpathAndClick(driver, "html/body/div[5]/div[2]/div[1]/div[4]/dl/dd/a[3]");
20                Thread.sleep(2000);
21                String news = driver.getWindowHandle();
22                findElementByTextAndClick(driver, "点击下载");
23                Set<String> handlenews = driver.getWindowHandles();
24                for (String newsss : handlenews) {
25                    if (newsss.equals(news) == false && newsss.equals(homehandle) == false) {
26                        driver.switchTo().window(newsss);
27                        output("切换到资源页面了!");
28                        findElementByXpathAndClick(driver, "html/body/div[3]/div[1]/div[2]/table/tbody/tr[3]/td[5]/a");
29                        Thread.sleep(500);
30                        driver.switchTo().alert().accept();
31                        driver.close();
32                    }
33                }
34                for (String newsss : handlenews) {
35                    if (newsss.equals(news)) {
36                        driver.switchTo().window(newsss);
37                        output("回到精品资源页面了!");
38                        driver.close();
39                    }
40                }
41            }
42        }
43        for (String handle : handles) {
44            if (handle.equals(homehandle)) {
45                driver.switchTo().window(handle);
46                output("回到首页了!");
47                Thread.sleep(2000);
48                driver.quit();
49            }
50        }
51    }

本文分享自微信公众号 - FunTester(NuclearTester),作者:八音弦

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • httpclient爬虫爬取汉字拼音等信息

    下面是使用httpclient爬虫爬取某个网站的汉字相关信息的实践代码,中间遇到了一些字符格式的问题。之前被同事见过用html解析类来抓取页面信息,而不是像我现...

    八音弦
  • selenium2java通过第三方登录绕过知乎登陆验证码

    本人在学习使用selenium2java的过程中,突然想把知乎首页的推荐内容放到本地或者把一个问题的优秀回答整理一下。可以知乎登录时那个选中倒立的汉字的验证码不...

    八音弦
  • selenium2java造数据例子

    本人在学习selenium2java的时候,有个功能,需要测试分页,每页20条数据,一个个添加太麻烦了,关键每条都得添加十几个数据,干脆自己写了一个方法,自动添...

    八音弦
  • jquery 实现分页 前端分页

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or...

    用户5760343
  • SpringBoot入门系列(三)SpringBoot资源文件属性配置

    前面介绍了Spring的@Controller和@RestController控制器, 他们是如何响应客户端请求,如何返回json数据。不清楚的朋友可以看看之前...

    架构师精进
  • Docker实战

    2.容器不是虚拟化:运行在Docker容器中的程序接口和主机的Linux内核直接打交道,可以帮助使用已经内置到操作系统中的容器技术

    硬核项目经理
  • IDEA操作知识点——如何使用idea生成注释文档JavaDoc

    用户7073689
  • 尝试中国区的GitHub

    不过,我比较懒,写代码仅仅是顺手而为,其实对代码本身并不感兴趣,编程这个东西,思维上没有挑战,太简单了,不想把时间花在上面。

    生信技能树
  • 从一个sql引发的hive谓词下推的全面复盘及源码分析(下)

    词法语法解析—>语义解析—>生成逻辑执行计划—>优化逻辑执行计划—>生成物理执行计划—>优化物理执行计划

    数据仓库践行者
  • 手把手搭建一个聊天机器人(二)

          这里,我们要去网上申请一个API,我们使用的是图灵聊天机器人。,网址是:http://www.tuling123.com/申请步骤就不说了,如果不会...

    钱塘小甲子

扫码关注云+社区

领取腾讯云代金券