標籤:方法 switch att read win exec equal rate end
如果遇到點擊按鈕或連結後出現新視窗的情況,就需要使用視窗切換的方法。
本例中就是先開啟百度搜尋介面,然後利用js開啟一個百度新聞介面,然後通過selenium提供的視窗切換方法切換視窗
package com.test.windows;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 WindowsSwitch { public static void main(String[] args) { WebDriver driver = new FirefoxDriver(); driver.get("http://www.baidu.com"); driver.manage().window().maximize(); String searchHandle = driver.getWindowHandle(); 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"); 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"); 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 : {57536d1e-6817-4127-83d6-6eb138f28e51}
the link of news is : http://news.baidu.com/
switch to news page successfully
switch to search page successfully
selenium測試(Java)--多視窗切換(十三)