UI自动化Selenium 页面窗口window定位切换

Selenium自动化,在操作元素时,一定是基于某个窗口这个前提;我们时常在操作时会出现打开新窗口的情况;如点击新增按钮,打开了新增单据的新页面窗口,接下来要录入单据信息时,必须告诉框架切换到新窗口后,才能操作窗口内的元素;

甚至还需要在几个窗口之间来回切换,要做到这点,我们就需要提前获得各个窗口的句柄,从而判断当前在哪个窗口,接下来要去哪个窗口;

一、页面窗口切换用到的几个方法:

  1. driver.current_window_handle 获取当前窗口handle
  2. driver.window_handles 获取所有窗口的handle,返回list列表
  3. driver.switch_to.window(handle) 切换到对应的窗口
  4. driver.close() 关闭当前窗口

二、窗口切换几种形式:

  • 通过句柄lists下标切换:
python 复制代码
# 切换到新页面
def locateNewPage(drObject):
    drObject.switch_to.window(drObject.window_handles[-1])


# 切换到首页面
def locateFirstPage(drObject):
    drObject.switch_to.window(drObject.window_handles[0])


# 切换到倒数第二页面
def locateSecondPage(drObject):
    drObject.switch_to.window(drObject.window_handles[-2])
  • 通过页面title切换:

    python 复制代码
    # 根据title切换窗口
    # 此封装原理,拿到当前所有页面的handle,然后循环根据当handle拿到页面title,和传入的title进行循环对比;
    def locateWindowTitle2(self, title):
        try:
            time.sleep(5)
            all_h = self.driver.window_handles  # 获得所有窗口句柄
            # 遍历句柄,对比句柄的title
            for i in all_h:
                tl = self.driver.title
                if tl == title:
                    break
                else:
                    self.driver.switch_to.window(i)
        except:
            raise AssertionError("页面切换失败!")
        else:
            pass
相关推荐
鹏大师运维3 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰3 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236674 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春5 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
AI智图坊5 小时前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
云烟成雨TD6 小时前
Spring AI 1.x 系列【56】用大模型评判大模型:递归顾问实现自动化评估方案
人工智能·spring·自动化
qq_366566508 小时前
视频配音自动化Pipeline:TTS选型+音色克隆+批量处理(附完整代码)
自动化·新媒体运营·音视频·音频
云计算磊哥@9 小时前
运维开发宝典026-MySQL02数据库表操作
运维·数据库·运维开发
天天进步201510 小时前
Tunnelto 源码解析 #9:控制服务器设计:Warp、WebSocket、Ping/Pong 与连接保活
运维·服务器·websocket
极客先躯11 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷