webdriver实现2个或两个以上窗口间切换的方法

来源:互联网 发布:汤姆叔叔 javascript 编辑:程序博客网 时间:2024/05/19 04:03

在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;}


0 0