安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Selenium如何使用句柄方式切换窗口?

4月28日 月依兮投稿
  窗口切换
  我们在使用浏览器打开链接时,通常会存在2种情况:
  1。在当前窗口打开,即覆盖。
  2。新建窗口打开,保留原有窗口。
  示例:
  百度首页搜索:博客园。
  打开博客园官网,获取当前页精华帖的标题。
  回到百度输入框,并打印出title。
  代码如下:
  fromseleniumimportwebdriver
  driverwebdriver。Chrome()
  driver。implicitlywait(10)
  打开百度首页
  driver。get(http:baidu。com)
  输入博客园并点击回车
  driver。findelementbyid(kw)。sendkeys(博客园)
  找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver。findelementbyxpath(h3a〔contains(。,官网)〕。。a〔1〕)。click()
  打印当前窗口的title
  print(driver。title)
  打印当前窗口的url
  print(driver。currenturl)
  点击博客园的精华贴
  driver。findelementbycssselector(a〔title编辑精选博文〕)。click()
  。。。。。。
  输出结果如下:
  博客园百度搜索
  https:www。baidu。coms?ieutf8f8rsvbp1rsvidx1tnbaiduwdE58D9AE5AEA2E59BADrsvpqfb7d28ae0001abcfrsvt06598quU7hn3kFKgkuBxhCIOyMaWnFVVXEjwlgeJppBhRahvfl8rUTZcZVQrqlangcnrsventer1rsvsug33rsvsug11rsvsug7100rsvsug20inputT348rsvsug4348
  selenium。common。exceptions。NoSuchElementException:Message:nosuchelement:Unabletolocateelement:{method:cssselector,selector:a〔title编辑精选博文〕}
  报错信息,未定位到该元素
  浏览器实现结果
  通过浏览器的实现结果,和代码的运行结果,可以判断出:即使web页面已跳转至新窗口,但是代码逻辑还在原有窗口。
  为解决该问题,我们需要引入句柄的概念:窗口句柄,粗略的理解,每个窗口对应一个句柄,句柄可认为是一个唯一长字符串。
  获取句柄的方法:
  获取当前页面句柄:driver。currentwindowhandle
  获取所有页面句柄:driver。windowhandles
  通过句柄,我们可以进行窗口的切换。
  切换窗口:driver。switchto。window()
  示例:
  fromseleniumimportwebdriver
  driverwebdriver。Chrome()
  driver。implicitlywait(10)
  打开百度首页
  driver。get(http:baidu。com)
  输入博客园并点击回车
  driver。findelementbyid(kw)。sendkeys(博客园)
  找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver。findelementbyxpath(h3a〔contains(。,官网)〕。。a〔1〕)。click()
  打印出所有的句柄信息
  print(driver。windowhandles)
  driver。quit()
  输出结果如下:
  〔CDwindow998407BA3D6B34956871D337B6F377FE,CDwindow844FF13AAEE0E14487AD368DEAA7A0AE〕
  从结果中我们可以看出:
  driver。windowhandles的数据类型是一个列表
  让我们回到上面的需求:此时我们唯一要做的就是,打开新的窗口后,代码切换至新窗口,并输出结果。
  fromseleniumimportwebdriver
  driverwebdriver。Chrome()
  driver。implicitlywait(10)
  打开百度首页
  driver。get(http:baidu。com)
  输入博客园并点击回车
  driver。findelementbyid(kw)。sendkeys(博客园)
  找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver。findelementbyxpath(h3a〔contains(。,官网)〕。。a〔1〕)。click()
  打印当前窗口的title
  print(切换前的title:,driver。title)
  切换至新窗口
  首先,我们要先获取到一个主句柄,作为灯塔,防止迷路
  mainWindowdriver。currentwindowhandle
  接着我们要获取所有的句柄信息,并赋值给handles
  handlesdriver。windowhandles
  使用for循环,遍历所有的handles,以便判断
  forhandleinhandles:
  使用driver。switchto。window()方法,切入句柄所在的窗口
  driver。switchto。window(handle)
  判断代码是否在当前窗口的title中,如果在,跳出循环
  if代码indriver。title:
  break
  让我们打印一下当前窗口的title
  print(切换后的title:,driver。title)
  点击博客园的精华贴
  driver。findelementbycssselector(a〔title编辑精选博文〕)。click()
  定位到标题的元素,并赋值给items
  itemsdriver。findelementsbycssselector(p〔classpostitem〕h3a)
  foroneinitems:
  print(one。text)
  打印完成后,切回主窗口,并打印出当前窗口的title
  driver。switchto。window(mainWindow)
  print(切回主句柄的title:,driver。title)
  输出结果如下:
  切换前的title:博客园百度搜索
  切换后的title:博客园代码改变世界
  2021530前20的精华帖
  【面试】如果你这样回答什么是线程安全,面试官都会对你刮目相看
  【面试】迄今为止把同步异步阻塞非阻塞BIONIOAIO讲的这么清楚的好文章(快快珍藏)
  为啥程序会有bug?
  关于分布式锁原理的一些学习与思考redis分布式锁,zookeeper分布式锁
  ERP不规范,同事两行泪
  只有程序员才能读懂的西游记
  从软件工程的角度解读任正非的新年公开信
  通俗易懂,C如何安全、高效地玩转任何种类的内存之Span的本质(一)。
  分布式系统关注点99的人都能看懂的熔断以及最佳实践
  神经网络的基本工作原理
  哎呀,我老大写Bug啦记一次MessageQueue的优化
  机器学习web服务化实战:一次吐血的服务化之路
  Windbg分析高内存占用问题
  我是怎么把一个项目带崩的
  彼之蜜糖,吾之砒霜聊聊软件开发中的最佳实践
  Linux的内存分页管理
  通俗易懂,什么是。NET?什么是。NETFramework?什么是。NETCore?
  藏在正则表达式里的陷阱
  你所不知道的日志异步落库
  为什么说Java程序员到了必须掌握SpringBoot的时候?
投诉 评论 转载

为什么小米全球销量第二,市值反而跌破发行价呢?组装厂而已。跟富士康没有什么区别市值跟预期有关,投资人不看好。阿里仍是国内第一大电商,利润更是远胜其他电商公司,为啥股价一直跌跌不休,京东年年亏损,为啥股价一直上涨。……马云会走下神坛吗?不知为什么,对袁隆平,钟南山这样的科学家有一种肃然起敬的感觉,他们一个为百姓的粮食安全,一个为百姓的生命安全呕心沥血,黙黙奉献。一想到马云,赚了中国人的钱拿去支持美国经济,花1……特斯拉ModelS软件再升级!自动泊车更方便特粉之家特粉之家专注于分享特斯拉相关资讯,敬请关注!在新能源汽车行业内,提及软件应用更新频率最先联想到的就是特斯拉,近几年来,特斯拉对于旗下车型进行的软件升级次数属实比其他电动汽……听说有很多山寨的OPPO手机,怎么分辨?由于OPPO销量口碑都非常不错,所有就有一些不法分子用山寨的OPPO手机来欺骗用户,其实鉴别OPPO山寨手机的方法也非常简单。首先我们在购买时一定要认真仔细检查OPPO手机的外……摘掉鸡肋产品标签,荣耀平板V7Pro评测,手写笔和键盘是亮点荣耀一次次刷新人们对安卓平板的潜力认知,去年推出高性能的生产力工具荣耀V6,如今又发布了旗舰荣耀平板V7Pro。从产品设计意图来看,荣耀对平板的展望已经不甘在娱乐工具层次发展,……夯实企业技术根基,九号公司用实力打造智慧产业既然选择了远方,便只管一往无前!在创新智慧短交通和机器人产品领域上,九号公司书写着一个又一个行业标杆。为探索拉近人类与未来的距离,用实际行动来实现碳中和目标贡献企业力量。……安徽全省重大项目云签约活动举行来源:人民网人民日报本报合肥5月10日电(记者韩俊杰)安徽2022年全省重大项目云签约活动于5月10日上午举行。这次云签约活动以主会场视频连线各市分会场的方式举行,……耳鸣很严重,听力下降,医生建议配助听器,助听器对耳鸣有好处吗耳鸣很严重,听力下降,医生建议配助听器,助听器对耳鸣有好处吗?你好,有的助听器有耳鸣掩蔽的功能,但是效果也是引人而异的,有的人佩戴助听器后后可以改善耳鸣的现象,建议到专业……iOS15。4翻车了,你更新了吗?上周二苹果推送了大家期待已久的iOS15。4正式版,新系统主要带了戴口罩解锁iPhone功能,但仅支持A14和A15设备,也就是iPhone12和iPhone13系列设备,因此……智能合约是什么?智能合约是一款计算机软件,其被设计为自动化自我实施合同,这意味着它触发某些动作预定条件满足后自动执行。例如,智能合约可以用作数字协议,在双方之间进行加密货币(或任何其他数字资产……为什么现在手机把握感被做到极致,但网友们还总带壳?我觉得主要是两个方面的考虑手机是个日常使用频率极高的贵重物品;另外,手机易摔损,而且维修成本高(主要是时间成本),因此需要得到一定程度的保护手机壳能在外观、手感、功能性上赋予手……Selenium如何使用句柄方式切换窗口?窗口切换我们在使用浏览器打开链接时,通常会存在2种情况:1。在当前窗口打开,即覆盖。2。新建窗口打开,保留原有窗口。示例:百度首页搜索:博客园。……
iPhone13或将于9月第三周推出,功能强大到没有理由不买对标阿里P9Java架构师面试题,助我拿下字节蚂蚁滴滴三家O口罩中的电荷联想答疑万能模板幻象比现实更真实?人类将成为两栖物种?iPhone手机为何经久不衰?国产品牌还需再提升,华为鸿蒙是一架乌克兰无人机在白俄罗斯境内坠毁内置索尼A5100微单Python其实很简单第一章说说编程那点事科技三分钟究竟是谁?因小米股价暴跌,雷军被他训斥一小时有哪些好用的营销软件?OPPORneo7新机曝光,Rneo6惭愧价崩沦为百元机让路淅沥淅沥哗啦哗啦雨下来辽。。

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利