selenium測試(Java)--多窗口切換(十三)


如果遇到點擊按鈕或鏈接后出現新窗口的情況,就需要使用窗口切換的方法。

 

本例中就是先打開百度搜索界面,然后利用js打開一個百度新聞界面,然后通過selenium提供的窗口切換方法切換窗口

 1 package com.test.windows;
 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 WindowsSwitch {
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         System.out.println("baidu search handle : " + searchHandle);
21 
22         // 獲取百度新聞的連接,然后利用js打開一個新的窗口
23         waitTime(3000);
24         String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href");
25         System.out.println("the link of news is : " + href);
26         JavascriptExecutor executor = (JavascriptExecutor) driver;
27         executor.executeScript("window.open('" + href + "')");
28 
29         waitTime(3000);
30         Set<String> handles = driver.getWindowHandles();
31         Iterator iterator = handles.iterator();
32         Iterator iterator2 = handles.iterator();
33 
34         // 進入百度新聞窗口,並獲取title驗證
35         waitTime(3000);
36         while (iterator.hasNext()) {
37             String h = (String) iterator.next();
38             if (h != searchHandle) {
39                 driver.switchTo().window(h);
40                 if (driver.getTitle().contains("百度新聞")) {
41                     System.out.println("switch to news page successfully");
42                     break;
43                 } else {
44                     continue;
45                 }
46             }
47 
48         }
49 
50         // 返回百度首頁
51         waitTime(3000);
52         /*
53          * 可以直接使用searchHandle來切換,也可以利用遍歷來切換
54          * driver.switchTo().window(searchHandle);
55          * if(driver.getTitle().contains("百度一下")){
56          * System.out.println("switch to search page successfully");
57          * driver.findElement(By.cssSelector("#kw")).sendKeys(
58          * "switch successfully"); }
59          */
60         while (iterator2.hasNext()) {
61             String h = (String) iterator2.next();
62             if (searchHandle.equals(h)) {
63                 driver.switchTo().window(h);
64                 if (driver.getTitle().contains("百度一下")) {
65                     System.out.println("switch to search page successfully");
66                     driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully");
67                     break;
68                 } else {
69                     continue;
70                 }
71             }
72 
73         }
74 
75         waitTime(3000);
76         driver.quit();
77 
78     }
79 
80     static public void waitTime(int time) {
81 
82         try {
83             Thread.sleep(time);
84         } catch (InterruptedException e) {
85             // TODO Auto-generated catch block
86             e.printStackTrace();
87         }
88     }
89 
90 }

 

運行結果:

baidu search handle : {57536d1e-6817-4127-83d6-6eb138f28e51}
the link of news is : http://news.baidu.com/
switch to news page successfully
switch to search page successfully

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM