1. 程式人生 > >selenium開啟新視窗以及視窗切換

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;       } }