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
相关推荐
加油,旭杏27 分钟前
【Linux】Linux进程的概念
linux·运维·服务器·进程·冯诺依曼体系结构·管理·pcb
AiBoxss1 小时前
提升效率的AI工具集 - 轻松实现自动化
运维·人工智能·自动化
两仪式quq1 小时前
Linux-环境变量
linux·运维·服务器
阳光九叶草LXGZXJ2 小时前
南大通用数仓-GCDW-学习-03-用户管理
linux·运维·数据库·学习
秣宇2 小时前
Linux提升篇-服务器BIOS介绍
linux·运维·服务器
影子落人间2 小时前
Linux常用命令大全
linux·运维·服务器
keep__go2 小时前
GBase8a 开机自启动
linux·运维·服务器·南大通用·gbase8a
王哲晓2 小时前
Linux常见查看文件命令
linux·运维·服务器
打鱼又晒网2 小时前
你了解system V的ipc底层如何设计的吗?消息队列互相通信的原理是什么呢?是否经常将信号量和信号混淆呢?——问题详解
linux·运维·服务器·后端·操作系统
鄃鳕2 小时前
任务管理与守护进程【Linux】
linux·运维·服务器