(selenium+python)_UI自动化03_定位新开窗口内元素
前言
浏览器点击web网站链接时,经常在当前窗口的基础上打开另一个新的窗口。如下:
selenium定位新窗口元素,需要先切换到新窗口,再定位元素,否则会出现报错“NoSuchElementException: Message: no such element...”
定位新窗口元素
1,获得窗口句柄
driver.current_window_handle # 获得当前窗口句柄 driver.window_handles # 获得所有窗口句柄
2,切换至新窗口
all_pages = driver.window_handles # 获得所有窗口句柄 driver.switch_to.window(all_pages[-1]) # 切换至最后一个窗口
3,定位元素
切换至新窗口后,正常定位元素即可
返回定位原有页面
1,切换回原有页面
all_pages = driver.window_handles # 获得所有窗口句柄 driver.switch_to.window(all_pages[-1]) # 切换至最后一个窗口
2,定位元素
切换回原有窗口后,正常定位元素即可
实例
备注:以京东首页-打开我的订单窗口为实例
1 # 京东定位新开窗元素实例 2 from selenium import webdriver 3 from time import sleep 4 5 driver = webdriver.Chrome() 6 driver.get('https://www.jd.com/') #打开京东 7 sleep(2) 8 9 driver.find_element_by_xpath('//*[text()="我的订单"]').click() # 点击我的订单 10 sleep(3) 11 12 all_pages = driver.window_handles # 获取所有窗口句柄 13 print("order page:", all_pages) 14 15 driver.switch_to.window(all_pages[-1]) # 切换至我的订单窗口 16 bottom = driver.find_element_by_class_name("links").text # 获得我的订单页-底栏文描 17 print("我的订单-底栏:", bottom) 18 driver.close() # 关闭当前窗口-即我的订单页 19 20 driver.switch_to.window(all_pages[0]) 21 driver.find_element_by_xpath('//*[contains(text(),"优惠券")]').click()
分类:
selenium
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现