如何解决Selenium句柄、多窗口问题

selenium web自动化测试---多标签页切换 (1)有的时候,点击一个链接,会重新打开一个标签页 (2)对标签页的切换、关闭等,直接看代码和注释吧 # coding:utf-8 from selenium import webdriver import time # 实例化一个Chrome浏览器驱动对象,,参数是chromdriver.exe的路径 driver = webdriver.Chrome(chromedriver.exe路径) # 隐式等待 driver.implicitly_wait(5) # 访问baidu首页 driver 阅读详情

有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

一、认识多窗口

1、这里以赶集网为例,打开赶集网http://cd.ganji.com/,点击工作,就会发现会重新打开一个窗口;

image

image

二、获取当前窗口句柄

1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别。

2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。

3.获取当前页面的句柄:browser.current_window_handle

image

image

4.执行结果

image

image

三、获取所有窗口句柄

1、获取所有窗口句柄:brows.window_handles

image

image

2、执行结果

image

image

四、切换句柄

方法一:

1.循环判断是否与首页句柄相等;

2.如果不等,说明是新页面的句柄;

3.获取的新页面句柄后,可以切换到新打开的页面上;

4.打印新页面的title,看是否切换成功。

image

image

执行结果

image

image

方法二:

直接获取all_h这个list数据里面第二个hand的值:all_h[i]

image

image

执行结果

image

image

五、关闭新窗口,返回到原来的窗口

1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证;

2.验证完后切关闭新窗口;

3.切回句柄到首页;

4.打印当前页面的句柄,看是否切换到首页了。

image

image

执行结果

image

image

六、参考代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File    : handles.py
# @Software: PyCharm
import time
from selenium import webdriver
url = 'http://cd.ganji.com/'
browser = webdriver.Firefox()
browser.get(url)
time.sleep(5)
# 获取当前页面的窗口句柄
handle = browser.current_window_handle
print(handle)
# 获取所有窗口句柄
browser.find_element_by_link_text('成都招聘').click()
handles = browser.window_handles
print(handles)
# 方法一:判断句柄是否与首页相等
for i in handles:
    if i != handle:
        browser.switch_to.window(i)
        print(browser.title)
        browser.close()
        browser.switch_to.window(handle)
        print(browser.title)
# 方法二:直接获取list列表里面的值,取值handles[i]
# browser.switch_to.window(handles[0])
# print(browser.title)
# 退出
browser.quit()

好了,说了那么多,那么如何学习自动化?学习有没有资料?

对自动化感兴趣的同学,欢迎加QQ群175317069,一起学习,相互讨论。

群内已经有小伙伴将知识体系整理好(源码,笔记,PPT,学习视频),欢迎加群免费领取

加QQ群175317069,免费领取资料

分享给喜欢自动化,有梦想成为大牛的Tester们,希望能够帮助到你们。

Selenium自动化测试:iframe与多窗口切换的核心原理与实战 在Web自动化测试中,页面元素定位失败往往是测试脚本不稳定的主要原因之一,这通常源于未正确处理不同的文档上下文环境。iframe作为内联框架,允许在一个HTML文档中嵌入另一个独立文档,每个iframe拥有自己的document对象,与主页面DOM隔离。Selenium等自动化工具在同一时间只能在一个document上下文中操作,因此必须通过显式切换来访问iframe内的元素。这项技术对于集成第三方服务(如支付、地图插件)和测试现代前端框架(如Vue、React)构建的复杂应用至关重要。通过掌握iframe 阅读详情

相关推荐

Selenium switch_to方法详解:攻克iframe、弹窗与多窗口切换难题

在Web自动化测试与数据采集领域,处理复杂页面结构是核心挑战之一。其原理基于WebDriver的'单焦点'模型,即任一时刻只能在一个上下文中操作元素。这一机制的技术价值在于确保自动化脚本能精准定位和交互,避免常见的NoSuchElementException错误。应用场景广泛,包括银行系统内嵌iframe操作、单页应用模态框处理以及多标签页数据抓取。本文聚焦Selenium的switch_to方法,深入解析iframe切换、alert弹窗处理及多窗口管理等热词相关技巧,帮助开发者构建健壮的自动化解决方案。

weixin_28831341的博客 245

自动化测试基础篇--Selenium多窗口、句柄问题

有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。 一、认识多窗口 1、这里以赶集网为例,打开赶集网http://cd.ganji.com/,点击工作,就会发现会重新打开一个窗口; ...

bangxijiu6026的博客 418

Selenium窗口切换:基于标题精准定位新窗口的自动化测试实践

在Web自动化测试领域,窗口切换是处理多标签页或弹窗交互的核心技术。其原理在于Selenium WebDriver通过唯一的窗口句柄管理浏览器上下文,但句柄的随机性要求更稳定的定位策略。这项技术的价值在于提升测试脚本的确定性和可维护性,使其能模拟真实用户在多窗口环境下的操作。典型的应用场景包括电商比价、第三方支付授权、后台管理弹窗等。本文聚焦于**基于窗口标题切换**这一高级策略,通过封装健壮的**Python函数**,解决了传统句柄或索引方式的不稳定性,为构建可靠的UI自动化测试框架提供了关键解决方案。

weixin_28835583的博客 250

【Python_Selenium学习笔记(六)】基于Selenium模块实现切换句柄

有些网站页面在点开链接后会出现新的窗口,但是浏览器对象 browser(driver) 还是之前页面的对象,针对此问题,需要切换到不同的窗口进行操作,Selenium 模块提供了 switch_to.window() 方法 切换句柄 和 window_handles 属性 获取句柄列表,下面详细介绍如何使用 Selenium 模块完成句柄的切换,并以实际案例进行展示。

禾戊之昂的博客 1368

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 481

从建模到调参:基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程解析

本文详细解析了基于Simulink的两轮差速机器人轨迹跟踪PID控制全流程,涵盖运动学建模、仿真环境搭建、PID控制器设计与实现等关键环节。通过Simulink仿真和可视化调试技巧,帮助开发者掌握移动机器人运动控制的核心技术,提升轨迹跟踪精度与性能优化能力。

weixin_28717683的博客 244

Python之Selenium知识总结

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器,支持Windows、Linux、IOS、Android等操作系统。

- 7715

PX4 磁罗盘干扰分析

无人机上的电机电流会干扰无人机上搭载的磁罗盘,PX4官方提供了一些方式,通过分析飞行日志,判断电机是否对磁罗盘有严重影响。

Zecet的博客 3358

UI自动化测试之selenium工具(浏览器窗口的切换)

1、在浏览网页的时候,有时点击一个链接或者按钮,会弹出一个新的窗口。这类窗口也被称之为句柄(一个浏览器窗口的唯一标识符,通过句柄实现不同浏览器窗口之间的切换),在我们手动控制浏览器的时候,产生新的句柄时浏览器会自动的帮我们跳转到最新的句柄处(鼠标聚焦于最新打开的浏览器窗口)。

okcross0的博客 1436

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1024

10-Oracle 23 ai Vector Search 概述和参数

企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation :RAG)功能,RAG能够将LLM的生成能力与知识库的精准资料库进行检索结合,将大模型部署在内部同时将私有的数据进行LLM的检索避免泄露企业专用的数据同时提高的准确性。于是如何将数据存入向量数据库以及向量查询等这些基本功能变得必备和重要。

远方的专栏 1296

php selenium窗口句柄,如何解决Selenium句柄、多窗口问题

有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。一、认识多窗口1、这里以赶集网为例,打开赶集网http://cd.ganji.com/,点击工作,就会发现会重新打开一个窗口;image二、获取当前窗...

weixin_39815410的博客 360

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 856

python爬虫之selenium —— 多窗口操作

python爬虫之selenium--多窗口操作 前言 想一想,我们为什么要获取窗口句柄呢?有什么用呢? 来假设一下,我们打开了一个网站,点击了一个按钮,新打开了一个页面,我们在新页面操作完成之后,需要回到原来的页面继续操作,这时候你如果继续操作原来的页面会报错的。因为当前的窗口句柄不是原来的,这时候就需要用到driver.switch_to.window('窗口句柄')来切换到之前的窗口了 实战 from selenium import webdriverimport unittest..

测试界的彭于晏的博客 976

11、机器学习中的聚类与隐马尔可夫模型

本文介绍了机器学习中的两种重要方法:聚类算法和隐马尔可夫模型(HMM)。聚类作为无监督学习的代表,适用于发现无标签数据中的结构,常见算法包括K-均值和自组织映射(SOM),并在传感器数据分析等场景中展现应用价值。隐马尔可夫模型则是一种可解释的序列模型,用于从观测数据中推断隐藏状态,广泛应用于语音识别、自然语言处理和生物信息学等领域。文章详细讲解了HMM的核心概念如马尔可夫性质、转移与发射概率,并通过TensorFlow实现了前向算法,展示了其计算观测序列概率的动态规划思想。最后对比了两类方法的应用场景,展望

garlic的博客 181

基于SOLIDWORKS API的工业级插件开发指南

SOLIDWORKS API是基于COM技术的一套开发接口,支持C#、VB.NET等语言,用于自动化建模、属性管理、界面定制等功能。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 2751

突破多窗口测试瓶颈:Selenium窗口句柄全解析与实战指南

Selenium作为一款强大的浏览器自动化框架,广泛应用于Web应用测试中。在实际测试场景中,多窗口交互是常见需求,但也常常成为测试效率的瓶颈。本文将系统解析Selenium窗口句柄的核心概念、操作方法及实战技巧,帮助测试工程师轻松应对多窗口测试挑战。 ## 什么是Selenium窗口句柄? 窗口句柄(Window Handle)是Selenium中用于标识浏览器窗口的唯一字符串。当Web应用

gitblog_00151的博客 515

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Selenium 新窗口打开链接,并定位到新窗口

有时定位不到元素,是因为页面打开了新窗口,因此我们要定位到新窗口里 mainWindow = dr.current_window_handle #保存主页面句柄 urlEle = driver.find_element_by_xpath("xpath").get_attribute("href") #定位链接元素 js = "window.open('"+urlEle+"');" ...

雪国的花儿’s Blog 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Selenium之多窗口切换

文章目录1、多窗口切换 1、多窗口切换 from selenium import webdriver from time import sleep driver=webdriver.Chrome() #打开百度页面 driver.get("https://www.baidu.com/") #获取百度页面窗口句柄 hwd=driver.current_window_handle print(hwd...

337

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Selenium经典面试题-多窗口切换解决方案

在做web端自动化测试用例编写过程中,大家有没有遇到窗口切换的情况,比如如下截图所示的商品列表页,点击任何一款产品后切换到这块产品详情页的情况。此时浏览器中叠放了两个窗口, 如下截图这种情况;或者出现打开两个浏览器窗口的情况,如下截图这种情况。这两种窗口切换的情况下大家的自动化测试脚本是如何编写的呢?还是不需要单独处理窗口切换?如果是使用selenium框架编写涉及窗口切换的自动化测试用例,肯定要单独处理窗口切换的情况。那么为什么要对出现新窗口的情况单独处理呢?因为我们通过浏览器驱动对象访问指定url对应的

Testfan_zhou的博客 512

selenium测试自动化1 2020年6月23日

1. 使用录屏软件时,出现# ERROR: Caught exception [ERROR: Unsupported command [selectWindow | win_ser_1 | ]] 解决: 由于selenium未能自动转化到新的浏览器窗口导致。 读取目前的窗口句柄driver.current_window_handle 读取目前的窗口句柄集合driver.window_handles 转换到新的窗口句柄driver.switch_to.window(driver.window_handles[

qq_45846149的博客 341

Selenium 测试 Electron 应用

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript代码代码库并创建 在Windows、macOS和Linux上运行的跨平台应用。• 有哪些应用。

2401_83396248的博客 720

robotframework切换到新的窗口

一、参考资料 https://www.cnblogs.com/testwang/p/6097621.html 二、切换及定位关键字 怎么切换窗口呢?首先可以F5,查看可以用到的关键字: Select Window:选择浏览器窗口匹配定位器。如果找到该窗口,所有后续命令都将使用所选窗口,直到再次使用该关键字。如果没有找到窗口,则此关键字将失败。返回前一个窗口句柄,并可用于稍后返回该句柄。 找到...

dieorlife的博客 7141

Selenium元素定位不到原因以及怎么办?

本文总结了自动化测试中元素定位失败的7种常见原因及解决方法:1)代码错误;2)元素未加载完成(推荐使用隐式/显式等待);3)元素被遮挡或隐藏(建议关闭遮挡层或使用JS操作);4)多窗口切换问题(需要切换窗口句柄);5)markdown元素无法点击(可模拟键盘操作);6)动态属性问题(使用部分匹配选择器);7)iframe嵌套元素(需切换iframe上下文)。文章提供了针对每种情况的实用解决方案,并建议在遇到问题时也可借助AI辅助解决。

lxy2977262881的博客 2040

【python】针对Selenium中弹框信息无法定位的问题,以下是综合解决方案及注意事项:

element = wait.until(EC.presence_of_element_located((By.XPATH, "//button[text()='提交']")))使用绝对路径定位(如/html/body//button)可能失败,建议使用相对路径或XPath表达式。处理动态ID :若元素ID动态变化,建议使用XPath相对路径或CSS选择器。若弹窗为alert,需使用driver.switch_to.alert处理;动态元素可能未完全加载,需添加显式等待或使用JavaScript强制加载。

Best_lgx的博客 912

Selenium自动化测试中iframe与多窗口切换的实战指南

在Web自动化测试与数据采集领域,理解浏览器文档对象模型(DOM)的复合结构是处理复杂页面的基础。DOM将网页组织为树状结构,而iframe作为内联框架,在页面内创建了独立的嵌套浏览上下文,这导致直接定位其内部元素会失败。Selenium WebDriver通过switch_to API实现上下文切换,其技术价值在于突破单一文档限制,使自动化脚本能够操作富文本编辑器、登录弹窗、第三方支付页面等常见组件。掌握iframe切换(switch_to.frame)与多窗口管理(switch_to.window)的原

weixin_28839601的博客 307
上一篇: 最明白的自动化原理
下一篇: 自动化测试是什么?
TestingGDR
博客等级 码龄8年 496粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值