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
相关推荐
2401_8919573121 分钟前
简单了解多路转接select
运维·服务器
2302_11124 分钟前
java依赖小结
java·运维·数据库
程序员-Benothing1 小时前
Shell 脚本条件判断与流程控制:if for while case 详解
linux·运维·服务器
AlanBruce1 小时前
摩尔信使MThings逻辑控制各组件使用指南
自动化·上位机·modbus·mthings·摩尔信使
IT摆渡者1 小时前
基于 Docker 部署 Nextcloud 私有云盘(外挂 Windows 共享)项目实践
运维·docker·容器
做运维的阿瑞2 小时前
Linux下DNS服务器搭建
linux·运维·服务器
团子股股东峥哥2 小时前
day37-RHEL-管理基本存储
linux·运维·服务器
天远API2 小时前
零信任架构实战:基于天远全能消金报告构建自动化消费分期网关
运维·人工智能·架构·自动化
Android系统攻城狮3 小时前
Linux Gstreamer深度解析之gst_audio_converter_reset调用流程与实战(二十一)
linux·运维·服务器·gstreamer音视频·音视频进阶
新时代牛马3 小时前
单机 docker run 管不住了?从编排需求、期望状态到调度/自愈闭环讲透
运维·docker·容器