范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  窗口切换
  我们在使用 浏览器 打开链接时,通常会存在2种情况:
  1. 在当前窗口打开,即覆盖。
  2. 新建窗口打开,保留原有窗口。
    示例:
   · 百度 首页搜索:博客园。
   ·  打开博客园官网,获取当前页精华帖的标题。
   ·  回到百度输入框,并打印出 title。
  代码如下:
  from   selenium   import webdriver
  driver = webdriver.Chrome()
  driver.implicitly_wait(10)
  # 打开百度首页
  driver.get("http://baidu.com")
  # 输入 博客园 并点击 回车
  driver.find_element_by_id("kw").send_keys("博客园 ")
  # 找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver.find_element_by_xpath("//h3//a[contains(.,"官网")]/../a[1]").click()
  # 打印当前窗口的 title
  print(driver.title)
  # 打印当前窗口的 url
  print(driver.current_url)
  # 点击博客园的 精华 贴
  driver.find_element_by_css_selector("a[title="编辑精选博文"]").click()
  ......
  输出结果如下:
  博客园_百度搜索
  https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%8D%9A%E5%AE%A2%E5%9B%AD&rsv_pq=fb7d28ae0001abcf&rsv_t=06598quU7hn3kFKgkuBxhCIOyMaWnFVVXEjwlgeJppBhRahvfl8rUTZcZVQ&rqlang=cn&rsv_enter=1&rsv_sug3=3&rsv_sug1=1&rsv_sug7=100&rsv_sug2=0&inputT=348&rsv_sug4=348
  selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"a[title="编辑精选博文"]"}
  # 报错信息,未定位到该元素
  浏览器实现结果
   通过浏览器的实现结果,和代码的运行结果,可以判断出: 即使 web 页面已跳转至新窗口,但是代码逻辑还在原有窗口。
   为解决该问题,我们需要引入 句柄 的概念:窗口句柄 ,粗略的理解,每个窗口对应一个句柄,句柄可认为是一个唯一长字符串。
  获取句柄的方法:
   · 获取当前页面句柄:driver.current_window_handle
  · 获取所有页面句柄:driver.window_handles
  通过句柄,我们可以进行窗口的切换。
    · 切换窗口:driver.switch_to.window()
    示例:
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.implicitly_wait(10)
  # 打开百度首页
  driver.get("http://baidu.com")
  # 输入 博客园 并点击 回车
  driver.find_element_by_id("kw").send_keys("博客园 ")
  # 找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver.find_element_by_xpath("//h3//a[contains(.,"官网")]/../a[1]").click()
  # 打印出所有的句柄信息
  print(driver.window_handles)
  driver.quit()
  输出结果如下:
  ["CDwindow-998407BA3D6B34956871D337B6F377FE", "CDwindow-844FF13AAEE0E14487AD368DEAA7A0AE"]
  # 从结果中我们可以看出:
  # driver.window_handles的数据类型是一个 列表 
  让我们回到上面的需求:此时我们唯一要做的就是,打开新的窗口后,代码切换至新窗口,并输出结果。
  from selenium import webdriver
  driver = webdriver.Chrome()
  driver.implicitly_wait(10)
  # 打开百度首页
  driver.get("http://baidu.com")
  # 输入 博客园 并点击 回车
  driver.find_element_by_id("kw").send_keys("博客园 ")
  # 找到博客园的官网,并点击;点击后会在新的窗口打开链接
  driver.find_element_by_xpath("//h3//a[contains(.,"官网")]/../a[1]").click()
  # 打印当前窗口的 title
  print("切换前的title:",driver.title)
  # 切换至新窗口
  # 首先,我们要先获取到一个主句柄,作为灯塔,防止"迷路"
  mainWindow = driver.current_window_handle
  # 接着我们要获取所有的句柄信息,并赋值给 handles
  handles = driver.window_handles
  # 使用for循环,遍历所有的handles,以便判断
  for handle in handles:
   # 使用driver.switch_to.window()方法,切入句柄所在的窗口
   driver.switch_to.window(handle)
   # 判断 "代码" 是否在当前窗口的title中,如果在,跳出循环
   if "代码" in driver.title:
   break
  # 让我们打印一下当前窗口的 title
  print("切换后的title:",driver.title)
  # 点击博客园的 精华 贴
  driver.find_element_by_css_selector("a[title="编辑精选博文"]").click()
  # 定位到标题的元素,并赋值给 items
  items = driver.find_elements_by_css_selector("p[class="post_item"] h3>a")
  for one in items:
   print(one.text)
  # 打印完成后,切回主窗口,并打印出当前窗口的 title
  driver.switch_to.window(mainWindow)
  print("切回主句柄的title:",driver.title)
  输出结果如下:
  切换前的title: 博客园_百度搜索
  切换后的title: 博客园 - 代码改变世界
  ------------------2021-5-30 前20的精华帖-----------------------------
  【面试】如果你这样回答"什么是线程安全",面试官都会对你刮目相看
  【面试】迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好  文章  (快快珍藏)
  为啥程序会有  bug  ?
  关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁
  ERP不规范,同事两行泪
  只有程序员才能读懂的西游记
  从软件工程的角度解读任正非的新年公开信
  通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span的本质(一)。
  分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践
  神经网络的基本工作原理
  哎呀,我老大写Bug啦——记一次MessageQueue的优化
  机器学习web服务化实战:一次吐血的服务化之路
  Windbg分析高内存占用问题
  我是怎么把一个项目带崩的
  彼之蜜糖,吾之砒霜——聊聊  软件开发  中的最佳实践
    Linux  的内存分页管理
  通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
  藏在正则表达式里的陷阱
  你所不知道的日志异步落库
  为什么说 Java 程序员到了必须掌握 Spring Boot 的时候?

新品第二期4G工业路由器R9607系列在工业作业现场里,路由器的使用现状经常都是使用路由器基本功能串口转网络数据透传场景。如农业气象监测中的监控摄像头(网口设备)和各类环境传感器(RS485串口设备),为满足此类场景联市值暴跌6200亿!一月被罚6次,马化腾和腾讯还扛得住吗?马化腾的腾讯拥有qq以及微信这两款价值最高的产品,这些年来,腾讯发展的非常不错,如今也已经与百度以及阿里并称是国内互联网三大巨头。腾讯的发展史1999年,马化腾研发了一个新的软件,智慧农贸人们眼中的菜市场是什么样的?为了满足人们多元化的消费需求,很多传统农贸市场纷纷开始升级改造,通过软硬件升级,摇身一变成为有智慧有颜值的智慧农贸智慧农贸菜市场系统改造建设智慧农贸解决方案服务商广州睿途士电子科技手机一碰开锁OTG反向充电,华为智选徳施曼智能门锁入手记朋友想换指纹智能锁已经很久了,正好之前入手了一款华为智选德施曼智能锁,作为德施曼的老用户(之前机械的自动的都是用的德施曼)用了大概三个月的时间体验还是不错的,所以之前618的时候我超苹果三星!泰国Q2季度智能手机出货量排名OPPO位居榜首随着8月份即将划上尾声,全球知名调研机构Counterpoint也适时发布了2021年Q2季度泰国的智能手机出货量。据Counterpoint表示,与去年相比,今年Q2季度泰国的智半年股价蒸发近万亿,拼多多的路还能走多久?有这样一些公司,它们一直在亏损,想要用补贴的方式来获得用户的规模。但最终他们还是要想办法让市场看到,他们可以通过创造价值来实现盈利。阿里巴巴集团执行副主席蔡崇信说道。其实这段话说得百度发布Apollo汽车机器人和无人车出行服务平台萝卜快跑8月18日,在百度世界大会上,百度创始人李彦宏首次提出了汽车机器人的概念,并发布了具有跨时代意义的Apollo汽车机器人。据介绍,百度汽车机器人在外观上,自动鸥翼门全玻璃车顶与外部长视频平台之战优酷跌落前三,B站日活用户6500万成功上位看剧看电影看综艺,你习惯上哪个平台?大多数人的回答一定是爱奇艺腾讯视频优酷。爱腾优三家独大,已霸占国内长视频平台前三甲许久,广告频出版权争夺会员限播成为常态。然而,就在这场长视频平I饭整合平台怎么装?这套配置收藏好在当下显卡市场行情波动较大,价格居高不下的时期,部分玩家决定先装一台集显主机用着,玩玩电竞类网游是肯定没有问题的,等以后显卡价格下来了再加装显卡也不迟。在最新的第11代酷睿上,InwatchOS8beta6要来了,正式版9月发布会上亮相在iOS15iPadOS15和tvOS15测试版于周二发布数小时后,Apple第六个watchOS8开发者测试版现已可供测试。最新版本可以通过Apple开发人员中心为注册测试程序的又翻车?升级iOS14。7。1正式版手机无信号,果粉没升级的先别升iOS系统和安卓系统相比,在安全性上因为是独立的,所以一直被果粉称赞,但是这几年iOS系统频频受到漏洞和bug的困扰,更新速度也是越来越快了。关于iPhone手机iOS系统升级通常
iPhone隐藏超深的12个神技能,教你1秒制作最美证件照分享最实在的玩机技巧,洞察最前沿的科技资讯!大家好,这里是手机科技园!iPhone13快要发布了,用了这么多年的苹果手机,你真的了解iPhone吗?今天就给大家分享,iPhone隐优质的国产蓝牙音箱推荐很多人购买后都很喜欢购买一个音箱的价位不仅和音箱的音质有关系,还和音箱的大小有关系。传统音箱都是基础功能,需要插U盘才能读取信息,但是现在这样的音箱几乎都被换掉了,换成了蓝牙音箱,那么国产蓝牙音箱哪个要买新手机?摸清降价规律,这几个点是关键很多人说手机产品的降价就跟闹着玩一样,我也是这样认为的,今天入手明天可能就会降价500,所以买手机如果摸不清手机的降价规律的话,那么到手就会亏钱。那么什么时候买手机最划算呢?聪明的这个中秋苏宁易购又出大动作,线上家电导购尊享服务随着电商竞争比拼日益激烈,传统零售数字化已经成为大趋势,几大电商平台不断投入资源和重金,争的就是用户收货速度的良好体验。尤其是近几年受市场空间拓展营销模式创新电商和社交平台融合等因华为大动作!全球首款鸿蒙打印机登场,HarmonyOS2升级用户突破1亿在9月13日晚间举行的智慧办公新品发布会上,华为发布旗下首款旗舰一体机产品MateStationX首款面向消费者销售的台式机产品MateStationS全球首款搭载HarmonyO将要发生的几件社会热点事件1。苹果13发布会北京时间9。15号凌晨1点!苹果13发布会将会如期举行,本次发布会除了重磅的iPhone13要发布之外,相继还要发布最新款的airpods和ipad。苹果13在外鸿蒙系统支持升级机型及时间计划华为已公布可支持升级尝鲜的具体机型,相信大家的机型都已升级到小版本的最新版了(165166168等版),但是手上的老机型也想尝尝鲜,可以看下这个时间计划表(事实中很多机型比计划时间美国人用什么手机,日本人用什么手机?您一定想不到,在中国手机火爆全球的情况下,却依然进不去日本市场,勉强进入了美国市场,经过统计发现,只有极少数美国人在使用中国手机,而日本人则跟我们一样,同样喜欢苹果手机,但跟中国市美国境内十个根服务器,中国一个都没有?我们会面临断网威胁吗?互联网如今已经成为了人们日常生活中必不可少的一部分了,与其说现代人有手机依赖症,不如说大家是有网络依赖症。而提到网络,也就不得不提到其背后的根服务器了,作为全球互联网通信的核心,根第四次工业革命即将来临,中国能否反超美国,引领世界呢?显然,我们即将迎来了第四次工业革命,这可能会让你感到惊讶,因为就大多数人所知,我们只经历了三次工业革命,而有些国家甚至一次都还没有经历过。尽管如此,这个关于彻底改变我们生活方式的趋一项长达10年的研究杨树林为适应环境改变遗传结构,最终在树群内维持多样性杨树是北美分布最广的树种,威斯康星大学麦迪逊分校的研究人员对杨树进行了一项长达10年的研究,揭示了杨树群多年以来是如何改变其遗传结构,让树木在保护自己不受害虫侵害与生长竞争阳光之间