selenium 2.0更多的是selenium1.0和webdriver的集成,因此是兼容1.0的(详细:http://www.ibm.com/developerworks/cn/web/1309_fengyq_seleniumvswebdriver/)。也就是说利用webdriver实例可以构建selenium的实例:
WebDriver driver = new FirefoxDriver();
Selenium selenium = new WebDriverBackedSelenium(driver, "https://apps.na.collabserv.com/");
我们知道selenium 1.0如果测试弹出窗口的时候,可以利用selectWindow来实现,代码如下:
String[] titles= selenium.getAllWindowTitles();
for(int i=0; i<titles.length; i++){
Logger.logMessage("Title is " + titles[i]);
if(titles[i].contains("pop up window title")){
selenium.selectWindow(titles[i]);
//do what you want to verify in the popup window
selenium.close(); //close the popup window
result=true;
break;
}
}
遗憾的是,在实践过程中,发现利用webdriver构建的selenium,上面的代码却失效了。主要体现在当弹出窗口关闭后,选择回原来的窗口时,用selenium.selectWindow(string)当传参数null或者title都出现异常。于是不得不修改代码采用webdriver方法来处理了(参考:http://blog.csdn.net/planisnothing/article/details/7580556)。通过运行发现现在正常了。
String mainWinHandler = driver.getWindowHandle();
selenium.click(locator); //popup window
//wait some time to load
for(String handler : driver.getWindowHandles()){
WebDriver popup = driver.switchTo().window(handler);
if(popup.getTitle().contains("pop up title")){
bretVal = true;
popup.close(); //close pop up
break;
}
}
driver.switchTo().window(mainWinHandler); //return to the previous window