zoukankan      html  css  js  c++  java
  • java+selenium——打开多个窗口,并切换窗口——方法一

    先来解释下什么是句柄,有时候浏览器的窗口句柄,也叫windows id,英文单词更好理解。

    你打开了一个浏览器,你开一个tab,就生成了一个id,这个id直到你关闭这个tab才会消失。

    如果你在一个浏览器上打开多个tab,那么就有多个windows id,为什么你关闭其中一个tab,但是不影响其他tab的显示,就是这个id的作用。

    本文就是要介绍如何获得浏览器窗体的句柄或者叫编号,为后面的driver实例在多个窗体之间切换做准备。

    我们先看看浏览器只开一个tab,也就是只有一个windows句柄的时候,打印出这个句柄出来。
    ==========================================================================================================

    打印结果像这样:CDwindow-e3655cc7-5cc1-42cc-a3d0-0d6339d1cfab


    这个id是每次启动都变化的,所以,你打印和我打印出来的肯定不同。

    接下来,看看有两个tab,打印出两个windows句柄来,使用getWindowsHandles()方法。

    ==============================================================================================================================

    package rjcs;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.List;
    import java.util.Set;
    
    import org.openqa.selenium.interactions.Actions;
    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.TakesScreenshot;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.interactions.Actions;
    import org.openqa.selenium.By;
    import org.openqa.selenium.Keys;
    import org.openqa.selenium.WebElement;
    import org.testng.annotations.Test;
    import org.openqa.selenium.*;
    
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    
    import org.openqa.selenium.OutputType;
    
    import com.thoughtworks.selenium.SeleneseTestNgHelper;
    
    public class ckqh 
    {
        
        public static void main(String[] args)
        
        {
             System.setProperty("webdriver.firefox.bin","C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");    //设置火狐的安装路径,防止系统找不到
                
             FirefoxDriver driver = new FirefoxDriver();        //初始化FireFox浏览器实例,并打开浏览器
             
            try
            {
                 driver.manage().window().maximize();         //最大化窗口
                 
                 Thread.sleep(3000);        
                 
                 driver.manage().window().maximize();         //最大化窗口
                 
                 Thread.sleep(3000);
            
                 driver.get("https://www.baidu.com");                    //打开一个网址,方法一             
            
                 Thread.sleep(3000);                  
                              
                  driver.findElementByPartialLinkText("设为主页").click();
    
                 Thread.sleep(3000);  
                 
                 
                 
                 System.out.println(driver.getWindowHandle());    //打印当前浏览器的当前标签页的句柄
                 
                 String a = driver.getWindowHandle();
                 
                 Thread.sleep(3000); 
                 
                 System.out.println(driver.getWindowHandles());    //打印当前浏览器的所有标签页的句柄
                                                                   //打印出来是一个list
                 Thread.sleep(3000); 
                 
                 Set<String> currenWindow = driver.getWindowHandles ();         //获取所有句柄
                 System.out.println (currenWindow.size ());              //打印句柄(即窗口)的个数
    
                 Thread.sleep(3000);            
                 
                 driver.switchTo().window(a);    //切换句柄
                 
                 Thread.sleep(3000); 
                 
            }catch (Exception e) 
            {
                e.printStackTrace();
            }finally 
            {
                driver.quit();
            
             }
       }
    
    }

    执行结果:

    {5f9d93e2-496b-4402-a938-7968c83920db}
    [{5f9d93e2-496b-4402-a938-7968c83920db}, {8beddbeb-0ce9-414c-8b83-2f8188da6bde}]
    2

  • 相关阅读:
    【PowerOJ1756&网络流24题】最长k可重区间集问题(费用流)
    C/C++运算符进阶
    HTTPS与SSL入门
    UML入门
    valgrind使用入门
    HTML5 Canvas入门
    C++11新特性之智能指针
    使用CppUnit进行单元测试
    邮件系统相关协议之POP
    DNS基本概念和相关命令
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12216060.html
Copyright © 2011-2022 走看看