ITPub博客

首页 > 数据库 > 数据库开发技术 > selenium2java 遇到有三个窗口用例的处理办法

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

原创 数据库开发技术 作者:FunTester 时间:2019-08-30 09:37:15 0 删除 编辑

本人在学习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    }

往期文章精选

  1. java一行代码打印心形

  2. Linux性能监控软件netdata中文汉化版

  3. 接口测试代码覆盖率(jacoco)方案分享

  4. 性能测试框架

  5. 如何在Linux命令行界面愉快进行性能测试

  6. 图解HTTP脑图

  7. 写给所有人的编程思维

  8. 如何测试概率型业务接口

  9. httpclient处理多用户同时在线

  10. 成为杰出Java开发人员的10个步骤

  11. 将swagger文档自动变成测试代码

公众号地图 ☢️ 一起来~FunTester


原文作者:FunTester;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-07

  • 博文量
    1037
  • 访问量
    420702