Java+Selenium3方法篇19-获取浏览器窗体的句柄【转载】

先来解释下什么是句柄,有时候浏览器的窗口句柄,也叫windows id,英文单词更好理解。你打开了一个浏览器,你开一个tab,就生成了一个id,这个id直到你关闭这个tab才会消失。如果你在一个浏览器上打开多个tab,那么就有多个windows id,为什么你关闭其中一个tab,但是不影响其他tab的显示,就是这个id的作用。本文就是要介绍如何获得浏览器窗体的句柄或者叫编号,为后面的driver实例在多个窗体之间切换做准备。

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

[java] view plain copy
  1. package lessons;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.openqa.selenium.By;  
  6. import org.openqa.selenium.WebDriver;  
  7. import org.openqa.selenium.WebElement;  
  8. import org.openqa.selenium.chrome.ChromeDriver;  
  9.   
  10. public class ElementOpration {  
  11.     public static void main(String[] args) throws Exception {    
  12.           
  13.         System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");    
  14.              
  15.         WebDriver driver = new ChromeDriver();    
  16.        
  17.         driver.manage().window().maximize();    
  18.          
  19.         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);  
  20.             
  21.         driver.get("https://www.baidu.com");    
  22.          
  23.         Thread.sleep(1000);  
  24.          
  25.         // 打印当前页面的的句柄  
  26.         System.out.println(driver.getWindowHandle());  
  27.                   
  28.     }    
  29. }  

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

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

接下来,看看有两个tab,打印出两个windows句柄来,使用getWindowsHandles()方法。大于两个的情况,就不介绍,你可以自己试试,然后把多个句柄打印出来。

[java] view plain copy
  1. package lessons;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.openqa.selenium.By;  
  6. import org.openqa.selenium.WebDriver;  
  7. import org.openqa.selenium.WebElement;  
  8. import org.openqa.selenium.chrome.ChromeDriver;  
  9.   
  10. public class ElementOpration {  
  11.     public static void main(String[] args) throws Exception {    
  12.           
  13.         System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");    
  14.              
  15.         WebDriver driver = new ChromeDriver();    
  16.        
  17.         driver.manage().window().maximize();    
  18.          
  19.         driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);  
  20.             
  21.         driver.get("https://www.baidu.com");    
  22.          
  23.         Thread.sleep(1000);  
  24.           
  25.         WebElement setHome_link = driver.findElement(By.partialLinkText("设为主页"));  
  26.         setHome_link.click();  
  27.         Thread.sleep(1000);  
  28.         System.out.println(driver.getWindowHandles());  
  29.     }    
  30. }  

打印出来是一个list:
[CDwindow-49451fa1-b9ab-4c6a-a94f-b677637d8b50, CDwindow-d3238ea1-d742-4595-acb2-c08f2b1f5d6b]

posted on 2018-04-28 13:21  okeymen  阅读(208)  评论(0)    收藏  举报

导航