selenium + java 不同視窗切換
阿新 • • 發佈:2018-11-19
不同視窗切換:
selenium有兩個關於獲取視窗的方法:
1. driver.getWindowHandle(); 返回的是字串,獲取當前視窗的控制代碼
2. driver.getWindowHandles(); 返回的是 Set<String> ,獲取所有視窗
public class ElementOpration { public static void main(String[] args) throws InterruptedException { //驅動配置 System.setProperty("webdriver.chrome.driver","D:\\driver\\chromedriver.exe") WebDriver driver =new ChromeDriver (); driver.manage ().window ().maximize (); driver.get("http://www.jd.com"); Thread.sleep ( 1000 ); //for links String defaultWindow = driver.getWindowHandle (); WebElement phone_link = driver.findElement (By.linkText("手機")); //scroll to phone_link JavascriptExecutor scroll =(JavascriptExecutor)driver; scroll.executeScript ( "arguments[0].scrollIntoView;",phone_link ); //open link in a windows ; click Actions actions =new Actions ( driver ); actions.keyDown ( Keys.SHIFT).click (phone_link).perform (); Set<String> currenWindows =driver.getWindowHandles (); System.out.println (currenWindows.size ()); Thread.sleep ( 2000 ); for(String window:currenWindows){ if(!window.endsWith (defaultWindow)){ driver=driver.switchTo ().window ( window ); driver.manage ().timeouts ().pageLoadTimeout ( 60, TimeUnit.SECONDS ); driver.manage ().timeouts ().implicitlyWait ( 60,TimeUnit.SECONDS ); break; } } /*String defaultWindows = driver.getWindowHandle (); WebElement xiaomi_link = driver.findElement (By.linkText("小米")); Actions action =new Actions ( driver ); action.keyDown ( Keys.SHIFT).click (xiaomi_link).perform (); Set<String> currenWindow = driver.getWindowHandles (); System.out.println (currenWindow.size ()); Thread.sleep ( 2000 ); for(String window:currenWindow){ if(!window.endsWith (defaultWindows)){ driver = driver.switchTo ().window ( window ); driver.manage ().timeouts ().pageLoadTimeout ( 60, TimeUnit.SECONDS ); driver.manage ().timeouts ().implicitlyWait ( 60,TimeUnit.SECONDS ); break; } }*/ driver.quit (); } }