前言

有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

一、认识多窗口

1.打开赶集网:http://bj.ganji.com/,点击招聘求职按钮会发现右边多了一个窗口标签

2.我们用代码去执行点击的时候,发现界面上出现两个窗口,如下图这种情况就是多窗口了。

3.到这里估计有小伙伴纳闷了,手工点击是2个标签,怎么脚本点击就变成2个窗口了,这个之前讲过,脚本执行是不加载配置的,

手工点击是浏览器默认设置了新窗口打开方式为标签,这里用鼠标按住点二个标签,拖拽出来,也就变成2个标签了,是一回事。

二、获取当前窗口句柄

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

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

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

三、获取所有句柄

1.定位赶集网招聘求职按钮,并点击

2.点击后,获取当前所以的句柄:window_handles

四、切换句柄

网上大部分教程都是些的第一种方法,估计是互相抄吧,小编这里新增一个更简单的方法,直接从获取所有的句柄list里面取值。

方法一:

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

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

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

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

方法二:

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

五、关闭新窗口,切回主页

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

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

3.切回句柄到首页

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

六、参考代码

# coding:utf-8from selenium import webdriverdriver = webdriver.Firefox()driver.get("http://bj.ganji.com/")h = driver.current_window_handleprint h  # 打印首页句柄driver.find_element_by_link_text("招聘求职").click()all_h = driver.window_handlesprint all_h     # 打印所有的句柄# 方法一:判断句柄,不等于首页就切换# for i in all_h:                       # 这里不建议用for循环了,很多小伙伴懵的#     if i != h:#         driver.switch_to.window(i)#         print driver.title# 方法二:获取list里面第二个直接切换driver.switch_to.window(all_h[1])print driver.title# 关闭新窗口driver.close()# 切换到首页句柄driver.switch_to.window(h)# 打印当前的titleprint driver.titleselenium(python+java)

Selenium之多窗口句柄的切换相关推荐

  1. Python+selenium 自动化-通过窗口名切换窗口,如何获取当前窗口的title窗口名

    通过索引切换窗口 左边从0开始,-1是右边第一个窗口 windows = driver.window_handles driver.switch_to.window(windows[-1]) 通过窗口 ...

  2. 爬虫Spider 08 - chromedriver设置无界面模式 | selenium - 键盘操作 | 鼠标操作 | 切换页面 | iframe子框架 | scrapy框架

    文章目录 Spider 07回顾 cookie模拟登陆 三个池子 selenium+phantomjs/chrome/firefox Spider 08 笔记 chromedriver设置无界面模式 ...

  3. selenium登录斗鱼tv(切换iframe内嵌页面)

    from selenium.webdriver import Chrome import time# 1.下载selenium # 2.将驱动放在python解释器文件夹中web = Chrome() ...

  4. 虫师 selenium 4.10多窗口切换

    1.原始代码 2.敲完以后运行报错,说找不到TANGRAM__PSP_2__closeBtn 3.根据错误去定位和去 寻找TANGRAM__PSP_2__closeBtn,我们发现原来这个已经是TAN ...

  5. 自动化测试全套资料都在这里了,请查收(吐血整理)

    从事软件测试,提升测试技术,升职加薪,避免不了要学习自动化测试,本篇文章汇总了做自动化测试需要掌握的知识. 一.web端自动化测试教程 1. Selenium Webdriver原理介绍 2. Jav ...

  6. selenium+Java切换窗口句柄

    参考: selenium切换窗口句柄 1. 切换至下一个窗口 大致逻辑是通过 getWindowHandles 这个方法获取窗口的Set<String> 集合,然后通过 for 循环,只要 ...

  7. [python爬虫] Selenium切换窗口句柄及调用Chrome浏览器

    因为我的博客是根据我每个阶段自己做的事情而写的,所以前言可能有点跑题,但它更有利于让我回忆这个阶段自己的所作所为.这篇文章主要介绍Selenium爬虫获取当前窗口句柄.切换窗口句柄以及调用Chrome ...

  8. 爬虫之selenium标签页的切换

    爬虫之selenium标签页的切换 当selenium控制浏览器打开多个标签页时,如何控制浏览器在不同的标签页中进行切换呢?需要我们做以下两步: 获取所有标签页的窗口句柄    [获取窗口句柄,通过窗 ...

  9. 模拟浏览器自动化测试工具Selenium之三页面窗口切换开发篇

    不同网站有不同特性,需要掌握selenim基本网页元素定位以及浏览器控制,本文解析网页主要实现以下操作: 1)模拟鼠标操作,点击按钮提交:2)获取浏览器窗口句柄,切换到当前窗口下操作:3)处理不带总页 ...

最新文章

  1. 腾讯 AI 医学进展破解“秃头”难题,登 Nature 子刊!
  2. centos配置-java-php-mysql【转载参考】
  3. shell中$0,$?,$!等的特殊用法
  4. 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
  5. spark sql基本使用方法介绍(转载)
  6. newcondition java_Java并发Condition接口
  7. aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录
  8. 正式开始liunx学习之旅
  9. 禅道程序员的10条原则--转载--为了不忘
  10. 土豆首页图片延迟加载的效果
  11. Xshell中文乱码怎么处理?
  12. python后台执行代码
  13. Access——SQL语言查询
  14. java中的Date类,DataFormat类及Calendar类的使用详解
  15. web系统变慢了,怎么排查原因
  16. python批量图片合并
  17. 万洲金业:黄金ETF如何影响黄金价格?
  18. 微信小程序 云存储 wx.cloud.downloadFile 下载并另存
  19. 龙,中国,不是dragon
  20. Go语言之分支结构(十一)

热门文章

  1. 与优秀的人在一起,自己也会优秀起来!高质量技术群等你加入!
  2. Git Worktree 高级使用,这样清爽多了|新技能
  3. 皮一皮:秀恩爱死的快啊!!!!
  4. 重磅推荐:保姆级Java技术图谱!够学到元宵节了,赶紧收藏!
  5. 每日一皮:据说程序员都喜欢这些东西...
  6. Spring Security 实战干货: RBAC权限控制概念的理解
  7. 通知:Spring Cloud Alibaba 仓库迁移
  8. 30 分钟让你掌握 Git 的黑魔法
  9. post json 提示远程服务器500_解决WinServer2012R2服务器远程提示“参数错误”
  10. opencv读取中文路径图片