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
- webdriver实现2个或两个以上窗口间切换的方法
- webdriver实现窗口切换
- 在使用JS编程中,有时需要在一个方法返回两个个或两个以上的数据
- 自写控件:滑动呈现控件(实现了两个以上控件间的切换)师傅的
- WebDriver切换浏览器窗口
- webdriver切换窗口
- WebDriver切换浏览器窗口
- WebDriver切换浏览器窗口
- WebDriver切换浏览器窗口
- WebDriver切换浏览器窗口
- Selenium Webdriver窗口切换
- webdriver 多窗口切换
- WebDriver切换内联框架ifame及多窗口的切换
- asp搜索两个以上的词的实现方法
- Selenium自动化:WebDriver切换浏览器窗口(选项卡)方法
- 自写控件:滑动呈现控件(实现了两个以上控件间的切换)我写的
- 两个或多个进程之间通过Win32 API实现内存共享的方法(转)
- 两个或多个进程之间通过Win32 API实现内存共享的方法(转)
- 计算中英文混合字符串长度
- 从0开始写MyScrollView
- android 自定义 loader实现
- Android studio 查看 取消 所有断点
- 对手机丢失后可能产生的危害的思考
- webdriver实现2个或两个以上窗口间切换的方法
- java中正则模糊匹配字符串
- java编程查找质数代码优化
- ArcGIS Engine栅格数据使用总结
- 研究两天python函数式编程的总结和心得
- #120 Word ladder
- Java.Web学习笔记 JSTL
- ThinkPHP 3.1.2 查询方式
- JavaWeb学习总结(使用Session防止表单重复提交)