webdriver实现2个或两个以上窗口间切换的方法
2016-08-05 12:46
423 查看
在UI自动化测试中,经常为需要打开多个窗口,以下两个方法分别实现了两个窗口和多个窗口间切换的功能,现分享代码如下:
package cn.migu.core; import java.util.Iterator; import java.util.Set; import org.openqa.selenium.WebDriver; import cn.migu.utils.Log4jUtil; /** * <Description>切换窗口操作 * @author YanLu * */ public class SwitchToWindow { private static Log4jUtil log = new Log4jUtil(TakeScreenshot.class.getName()); /** * 切换窗口(当前窗口为2个) * @param driver */ public static void changeWindow(WebDriver driver) { String currentWindow = driver.getWindowHandle();// 获取当前窗口句柄 Set<String> handles = driver.getWindowHandles();// 获取所有窗口句柄 log.info("当前窗口数量:" + handles.size()); Iterator<String> it = handles.iterator(); while (it.hasNext()) { if (currentWindow == it.next()) { continue;// 跳出本次循环,继续下个循环 } try { WebDriver window = driver.switchTo().window(it.next());// 切换到新窗口 log.info("New page title is:" + window.getTitle()); } catch (Exception e) { log.info("无法切换至新打开的窗口"); log.info(e.getMessage()); } // window.close();//关闭当前焦点所在的窗口 } // driver.switchTo().window(currentWindow);//回到原来页面 } /** * 根据页面元素中的文本值实现在多个窗口间切换的方法 * @param driver * @param targetText 目标元素的文本值 */ public static void changeTargetWindow(WebDriver driver,String targetText) { // 得到所有窗口的句柄 Set<String> handles = driver.getWindowHandles(); log.info("当前窗口数量:" + handles.size()); Iterator<String> it = handles.iterator(); try { while (it.hasNext()) { // 遍历各个已打开的窗口 WebDriver window = driver.switchTo().window(it.next()); // 如果不存在页面元素,跳出,继续下次遍历 if (!PageElement.isContentExist(driver, targetText)) { // 方法isContentExist(targetText))实现的功能是根据目前本文查看是否存在页面元素 continue; } // 如果存在页面元素,终止遍历 if (PageElement.isContentExist(driver, targetText)) { log.info("切换至目标窗口成功"); log.info("New page title is:" + window.getTitle()); break; } } } catch (Exception e) { log.info("无法切换至新打开的窗口"); log.info(e.getMessage()); } } }
/** * 根据文本内容查看元素是否存在 * * @param driver * @param content * @return */ public static boolean isContentExist(WebDriver driver, String content) { WebElement element = null; boolean status = false; try { element = driver.findElement(By.xpath("//*[contains(text(),'" + content + "')]")); status = (null != element); if (status) { log.info("\"" + content + "\"" + " is exist!"); } } catch (Exception e) { log.info("\"" + content + "\"" + " doesn't exist!"); } return status; }
相关文章推荐
- HDU1024 这压缩真先进...先进的我想跳河
- Activity 的 生命周期分析
- [LeetCode] 90. Subsets II
- 跨平台开发框架Ionic学习之路------2
- LeetCode:237. Delete Node in a Linked List
- [转] Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- hibernate3与spring2.5.6整合Demo
- LeetCode:328. Odd Even Linked List
- LeetCode:206. Reverse Linked List
- 2016暑假多校联合---To My Girlfriend
- java中toCharArray()方法的使用
- Java.Web学习笔记 XML
- 一次由于网卡流量跑满引起的服务器丢包总结 推荐
- Linux下使用Speedtest测试网速
- 数据库表散列web.xml 配置
- (四)、ZooKeeper Java示例
- 基于NanoPi的光感传感器驱动开发
- 求一个字符串数组的实际长度
- POJ 3368 Frequent values RMQ应用
- Android项目中各个文件夹的含义和用途详解