1. 程式人生 > >selenium測試(Java)--關閉窗口(二十)

selenium測試(Java)--關閉窗口(二十)

中文 next() rgs cat [] int con cnblogs stack

quit方法:退出相關的驅動程序和關閉所有窗口

close方法:關閉當前窗口

package com.test.closewindow;

import java.util.Iterator;
import java.util.Set;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class
WindowsClose { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("http://www.baidu.com"); driver.manage().window().maximize(); String searchHandle = driver.getWindowHandle(); String newsHandle = null; System.out.println(
"baidu search handle : " + searchHandle); // 獲取百度新聞的連接,然後利用js打開一個新的窗口 waitTime(3000); String href = driver.findElement(By.cssSelector("[name=tj_trnews]")).getAttribute("href"); System.out.println("the link of news is : " + href); JavascriptExecutor executor = (JavascriptExecutor) driver; executor.executeScript(
"window.open(‘" + href + "‘)"); waitTime(3000); Set<String> handles = driver.getWindowHandles(); Iterator iterator = handles.iterator(); Iterator iterator2 = handles.iterator(); // 進入百度新聞窗口,並獲取title驗證 waitTime(3000); while (iterator.hasNext()) { String h = (String) iterator.next(); if (h != searchHandle) { driver.switchTo().window(h); if (driver.getTitle().contains("百度新聞")) { System.out.println("switch to news page successfully"); newsHandle = driver.getWindowHandle(); break; } else { continue; } } } // 返回百度首頁 waitTime(3000); /* * 可以直接使用searchHandle來切換,也可以利用遍歷來切換 * driver.switchTo().window(searchHandle); * if(driver.getTitle().contains("百度一下")){ * System.out.println("switch to search page successfully"); * driver.findElement(By.cssSelector("#kw")).sendKeys( * "switch successfully"); } */ while (iterator2.hasNext()) { String h = (String) iterator2.next(); if (searchHandle.equals(h)) { driver.switchTo().window(h); if (driver.getTitle().contains("百度一下")) { System.out.println("switch to search page successfully"); driver.findElement(By.cssSelector("#kw")).sendKeys("switch successfully"); driver.close();// 只關閉百度首頁 System.out.println("close search page successfully"); driver.switchTo().window(newsHandle);// 切換到百度新聞 System.out.println("當前的title是: " + driver.getTitle());// 獲取title waitTime(3000); break; } else { continue; } } } waitTime(3000); driver.quit(); } static public void waitTime(int time) { try { Thread.sleep(time); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

執行結果:

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

selenium測試(Java)--關閉窗口(二十)