selenium開啟新視窗以及視窗切換
package com.wiley.windows; import java.util.Set; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.interactions.Actions; public class NewWindow { private static WebDriver driver; @BeforeClass public static void before(){ driver=new FirefoxDriver(); driver.get("https://www.baidu.com"); driver.manage().window().maximize(); System.out.println("there are " + driver.getWindowHandles().size() + " window"); } @AfterClass public static void after(){ driver.quit(); } @Test public void getWindowMethod1(){ Actions action = new Actions(driver); action.sendKeys(Keys.CONTROL + "n").perform(); switchToWindow("新標籤頁", driver); driver.get("http://www.sina.com.cn"); System.out.println("there are " + driver.getWindowHandles().size() + " windows"); } @Test public void getWindowMethod2(){ JavascriptExecutor oJavaScriptExecutor = (JavascriptExecutor)driver; oJavaScriptExecutor.executeScript("window.open();"); System.out.println("there are " + driver.getWindowHandles().size() + " windows"); } @Test public void getWindowMethod3(){ String href = driver.findElement(By.partialLinkText("新聞")).getAttribute("href"); JavascriptExecutor oJavaScriptExecutor = (JavascriptExecutor)driver; oJavaScriptExecutor.executeScript("window.open('" + href + "')"); System.out.println("there are " + driver.getWindowHandles().size() + " windows"); } public static boolean switchToWindow(String windowTitle,WebDriver dr){ boolean flag = false; try { //將頁面上所有的windowshandle放在入set集合當中 String currentHandle = dr.getWindowHandle(); Set<String> handles = dr.getWindowHandles(); for (String s : handles) { if (s.equals(currentHandle)) continue; else { dr.switchTo().window(s); //和當前的視窗進行比較如果相同就切換到windowhandle //判斷title是否和handles當前的視窗相同 if (dr.getTitle().contains(windowTitle)) { flag = true; System.out.println("Switch to window: " + windowTitle + " successfully!"); break; } else continue; } } } catch (Exception e) { System.out.printf("Window: " + windowTitle + " cound not found!", e.fillInStackTrace()); flag = false; } return flag; } }