章节十四6-如何切换浏览器窗口

Posted luohuasheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了章节十四6-如何切换浏览器窗口相关的知识,希望对你有一定的参考价值。

一、在自动化的过程中我们需要把操作从一个窗口转移到另一个窗口进行一些操作,那么我们该如何实现这个功能?

例如,我们需要在点击图中“打开新窗口”后在新的窗口中进行搜索。

技术图片

每个窗口都带有一个固定句柄,每个打开的窗口都会有一个id,我们需要让selenium找到这个id然后在各个句柄(窗口)中进行切换

技术图片

 1 package switchto;
 2 
 3 import java.util.Set;
 4 import java.util.concurrent.TimeUnit;
 5 
 6 import org.junit.jupiter.api.AfterEach;
 7 import org.junit.jupiter.api.BeforeEach;
 8 import org.junit.jupiter.api.Test;
 9 import org.openqa.selenium.By;
10 import org.openqa.selenium.WebDriver;
11 import org.openqa.selenium.WebElement;
12 import org.openqa.selenium.chrome.ChromeDriver;
13 
14 class SwitchWindow 
15     
16     WebDriver driver;
17     String url;
18     
19     @BeforeEach
20     void setUp() throws Exception 
21         driver = new ChromeDriver();
22         url = "file:///C:/Users/acer/Desktop/%E5%85%B6%E5%AE%83/PracticePage.html";
23         driver.manage().window().maximize();
24         driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
25         driver.get(url);
26     
27 
28     @Test
29     void test() throws InterruptedException 
30 //        获取主窗口的handle(句柄)
31         String mainHandle = driver.getWindowHandle();
32         System.out.println("主窗口handle为:"+mainHandle);
33 //        点击“打开新窗口”按钮
34         WebElement openWindow = driver.findElement(By.id("openwindow"));
35         openWindow.click();
36         
37 //        获取所有窗口的handle
38         Set<String> allHandle = driver.getWindowHandles();
39         
40 //        切换handle
41         for(String handle:allHandle)    
42             System.out.println("获取到的handle为:"+handle);
43             if(!handle.equals(mainHandle)) 
44                 driver.switchTo().window(handle);
45                 Thread.sleep(3000);
46 //            在新窗口的百度页面输入框输入“selenium"
47                 WebElement seacherBox = driver.findElement(By.id("kw"));
48                 seacherBox.sendKeys("Selenium");
49 //                点击搜索按钮
50                 driver.findElement(By.id("su")).click();
51 //                关闭窗口
52                 driver.close();
53                 break;
54             
55             
56 //            切换回主窗口
57             driver.switchTo().window(mainHandle);
58             driver.findElement(By.id("name")).sendKeys("test");
59             
60     
61     
62     @AfterEach
63     void tearDown() throws Exception 
64         Thread.sleep(2000);
65         driver.quit();
66     
67 

 

注意:

1、driver.close()与driver.quit()的区别:

driver.close()只关闭当前正在操作的浏览器窗口。

driver.quit()用于关闭浏览器所有窗口。

 

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

欢迎关注,转载请注明来源。

以上是关于章节十四6-如何切换浏览器窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Selenium java 在浏览器中的两个窗口之间切换

手机左右滑动屏幕切换页面是如何实现的

如何解决IE浏览器跨域问题

如何用vim在同一窗口下打开多个文件并来回切换

切换到同一窗口中的弹出窗口

java+selenium——打开多个窗口,并切换窗口——方法一