zoukankan      html  css  js  c++  java
  • selenium测试(Java)--关闭窗口(二十)

    quit方法:退出相关的驱动程序和关闭所有窗口

    close方法:关闭当前窗口

     1 package com.test.closewindow;
     2 
     3 import java.util.Iterator;
     4 import java.util.Set;
     5 
     6 import org.openqa.selenium.By;
     7 import org.openqa.selenium.JavascriptExecutor;
     8 import org.openqa.selenium.WebDriver;
     9 import org.openqa.selenium.firefox.FirefoxDriver;
    10 
    11 public class WindowsClose {
    12 
    13     public static void main(String[] args) {
    14 
    15         WebDriver driver = new FirefoxDriver();
    16         driver.get("http://www.baidu.com");
    17         driver.manage().window().maximize();
    18 
    19         String searchHandle = driver.getWindowHandle();
    20         String newsHandle = null;
    21         System.out.println("baidu search handle : " + searchHandle);
    22 
    23         // 获取百度新闻的连接,然后利用js打开一个新的窗口
    24         waitTime(3000);
    25         String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href");
    26         System.out.println("the link of news is : " + href);
    27         JavascriptExecutor executor = (JavascriptExecutor) driver;
    28         executor.executeScript("window.open('" + href + "')");
    29 
    30         waitTime(3000);
    31         Set<String> handles = driver.getWindowHandles();
    32         Iterator iterator = handles.iterator();
    33         Iterator iterator2 = handles.iterator();
    34 
    35         // 进入百度新闻窗口,并获取title验证
    36         waitTime(3000);
    37         while (iterator.hasNext()) {
    38             String h = (String) iterator.next();
    39             if (h != searchHandle) {
    40                 driver.switchTo().window(h);
    41                 if (driver.getTitle().contains("百度新闻")) {
    42                     System.out.println("switch to news page successfully");
    43                     newsHandle = driver.getWindowHandle();
    44                     break;
    45                 } else {
    46                     continue;
    47                 }
    48             }
    49 
    50         }
    51 
    52         // 返回百度首页
    53         waitTime(3000);
    54         /*
    55          * 可以直接使用searchHandle来切换,也可以利用遍历来切换
    56          * driver.switchTo().window(searchHandle);
    57          * if(driver.getTitle().contains("百度一下")){
    58          * System.out.println("switch to search page successfully");
    59          * driver.findElement(By.cssSelector("#kw")).sendKeys(
    60          * "switch successfully"); }
    61          */
    62         while (iterator2.hasNext()) {
    63             String h = (String) iterator2.next();
    64             if (searchHandle.equals(h)) {
    65                 driver.switchTo().window(h);
    66                 if (driver.getTitle().contains("百度一下")) {
    67                     System.out.println("switch to search page successfully");
    68                     driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully");
    69                     driver.close();// 只关闭百度首页
    70                     System.out.println("close search page successfully");
    71                     driver.switchTo().window(newsHandle);// 切换到百度新闻
    72                     System.out.println("当前的title是: " + driver.getTitle());// 获取title
    73                     waitTime(3000);
    74                     break;
    75                 } else {
    76                     continue;
    77                 }
    78             }
    79 
    80         }
    81 
    82         waitTime(3000);
    83         driver.quit();
    84 
    85     }
    86 
    87     static public void waitTime(int time) {
    88 
    89         try {
    90             Thread.sleep(time);
    91         } catch (InterruptedException e) {
    92             // TODO Auto-generated catch block
    93             e.printStackTrace();
    94         }
    95     }
    96 
    97 }

    执行结果:

    baidu search handle : {75749f9a-f6b7-4fe6-80ae-dd9e053dd577}
    the link of news is : http://news.baidu.com/
    switch to news page successfully
    switch to search page successfully
    close search page successfully
    当前的title是: 百度新闻搜索——全球最大的中文新闻平台

  • 相关阅读:
    c# – 通过反射获取命名空间中的所有类型
    宝塔任务计划通道设置
    DRF项目框架基础设计
    Redis-数据特征和应用场景
    Redis-持久化详解
    Dockerfile文件详解
    ntp同步阿里服务器时间(centos)
    NUC8/11更新EC Firmware
    ambarella H2 kernel调试记录
    MobaXterm 执行make menuconfig不能删除字符
  • 原文地址:https://www.cnblogs.com/moonpool/p/5677807.html
Copyright © 2011-2022 走看看