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是: 百度新聞搜索——全球最大的中文新聞平台