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
相关推荐
极客on之路21 分钟前
线上 JVM 出问题
运维·服务器·jvm
HoneyMoose26 分钟前
Subversion 取代 CVS 后的 2026
运维
Ops菜鸟(Xu JieHao)35 分钟前
Linux 内网远程桌面Xrdp ~保姆级教程
linux·运维·服务器·windows·远程桌面·远程·xrdp
运维 小白39 分钟前
2. vLLM多机单卡+open claw部署
运维·ai·vllm
我材不敲代码1 小时前
PyQt5入门教程——简单实现一个登录界面
linux·运维·服务器
s09071361 小时前
PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容
linux·运维·服务器
小陈99cyh1 小时前
redis 一直报错# Fatal: Can‘t initialize Background Jobs.
运维·redis
Fanfanaas1 小时前
Linux 系统编程 进程篇 (三)
linux·运维·服务器·c语言·单片机·学习
九天鸟1 小时前
ESXI里面虚拟机服务器始终保持免用户认证状态
linux·运维·centos
汽车仪器仪表相关领域1 小时前
GT-NHVR-20-A1工业及商业用途点型可燃气体探测器:精准感知隐患,筑牢工商业安全防线
运维·网络·人工智能·功能测试·单元测试·汽车·压力测试