不同窗口切换:
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 ();
}
}