Selenium Webdriver中如何处理浏览器弹出多个窗口的问题

// 打开网页执行操作
String url = "http://*******";
driver.get(url);
driver.manage().window().maximize();
WebElement logoElement2 = driver.findElement(By.className("loginName"));
logoElement2.click();

// 获取当前页面的句柄
String currentHandle = driver.getWindowHandle();

// 单击iTask链接
WebElement webElement = driver.findElement(By.linkText("iTask"));
webElement.click();

// 单击iTask之后,会打开一个新的窗口,获取所有窗口的句柄
Set allHandles = driver.getWindowHandles();

// 对获取的所有句柄进行循环判断,把当前句柄从所有句柄中移除,剩下的就是想要获得的新窗口的句柄
Iterator iter = allHandles.iterator();
String handle = null;
WebDriver driverNew = null;
while(iter.hasNext()) {
    handle = iter.next();
    if(currentHandle == handle)
        continue;
    driverNew = driver.switchTo().window(handle);
}

// 完成在新窗口中的操作
webElement = driverNew.findElement(By.linkText("Team Worklog"));
webElement.click();
		
webElement = driverNew.findElement(By.linkText("Range"));
webElement.click();
		
webElement = driverNew.findElement(By.name("field_Start_Date"));
webElement.clear();
webElement.sendKeys(startDay);
		
webElement = driverNew.findElement(By.name("field_End_Date"));
webElement.clear();
webElement.sendKeys(endDay);
		
webElement = driverNew.findElement(By.name("Submit"));
webElement.click();

// 关闭当前窗口
driverNew.close();

// 关闭浏览器
driver.switchTo().window(currentHandle);
driver.quit();


你可能感兴趣的:(selenium)