Selenium之多窗口句柄的切换
前言
有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。
一、认识多窗口
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之多窗口句柄的切换相关推荐
- Python+selenium 自动化-通过窗口名切换窗口,如何获取当前窗口的title窗口名
通过索引切换窗口 左边从0开始,-1是右边第一个窗口 windows = driver.window_handles driver.switch_to.window(windows[-1]) 通过窗口 ...
- 爬虫Spider 08 - chromedriver设置无界面模式 | selenium - 键盘操作 | 鼠标操作 | 切换页面 | iframe子框架 | scrapy框架
文章目录 Spider 07回顾 cookie模拟登陆 三个池子 selenium+phantomjs/chrome/firefox Spider 08 笔记 chromedriver设置无界面模式 ...
- selenium登录斗鱼tv(切换iframe内嵌页面)
from selenium.webdriver import Chrome import time# 1.下载selenium # 2.将驱动放在python解释器文件夹中web = Chrome() ...
- 虫师 selenium 4.10多窗口切换
1.原始代码 2.敲完以后运行报错,说找不到TANGRAM__PSP_2__closeBtn 3.根据错误去定位和去 寻找TANGRAM__PSP_2__closeBtn,我们发现原来这个已经是TAN ...
- 自动化测试全套资料都在这里了,请查收(吐血整理)
从事软件测试,提升测试技术,升职加薪,避免不了要学习自动化测试,本篇文章汇总了做自动化测试需要掌握的知识. 一.web端自动化测试教程 1. Selenium Webdriver原理介绍 2. Jav ...
- selenium+Java切换窗口句柄
参考: selenium切换窗口句柄 1. 切换至下一个窗口 大致逻辑是通过 getWindowHandles 这个方法获取窗口的Set<String> 集合,然后通过 for 循环,只要 ...
- [python爬虫] Selenium切换窗口句柄及调用Chrome浏览器
因为我的博客是根据我每个阶段自己做的事情而写的,所以前言可能有点跑题,但它更有利于让我回忆这个阶段自己的所作所为.这篇文章主要介绍Selenium爬虫获取当前窗口句柄.切换窗口句柄以及调用Chrome ...
- 爬虫之selenium标签页的切换
爬虫之selenium标签页的切换 当selenium控制浏览器打开多个标签页时,如何控制浏览器在不同的标签页中进行切换呢?需要我们做以下两步: 获取所有标签页的窗口句柄 [获取窗口句柄,通过窗 ...
- 模拟浏览器自动化测试工具Selenium之三页面窗口切换开发篇
不同网站有不同特性,需要掌握selenim基本网页元素定位以及浏览器控制,本文解析网页主要实现以下操作: 1)模拟鼠标操作,点击按钮提交:2)获取浏览器窗口句柄,切换到当前窗口下操作:3)处理不带总页 ...
最新文章
- 腾讯 AI 医学进展破解“秃头”难题,登 Nature 子刊!
- centos配置-java-php-mysql【转载参考】
- shell中$0,$?,$!等的特殊用法
- 4个mos管驱动的全桥电路原理_最经典MOS管电路工作原理及详解没有之一
- spark sql基本使用方法介绍(转载)
- newcondition java_Java并发Condition接口
- aop注解配置切点 spring_springboot aop 自定义注解方式实现一套完善的日志记录
- 正式开始liunx学习之旅
- 禅道程序员的10条原则--转载--为了不忘
- 土豆首页图片延迟加载的效果
- Xshell中文乱码怎么处理?
- python后台执行代码
- Access——SQL语言查询
- java中的Date类,DataFormat类及Calendar类的使用详解
- web系统变慢了,怎么排查原因
- python批量图片合并
- 万洲金业:黄金ETF如何影响黄金价格?
- 微信小程序 云存储 wx.cloud.downloadFile 下载并另存
- 龙,中国,不是dragon
- Go语言之分支结构(十一)
热门文章
- 与优秀的人在一起,自己也会优秀起来!高质量技术群等你加入!
- Git Worktree 高级使用,这样清爽多了|新技能
- 皮一皮:秀恩爱死的快啊!!!!
- 重磅推荐:保姆级Java技术图谱!够学到元宵节了,赶紧收藏!
- 每日一皮:据说程序员都喜欢这些东西...
- Spring Security 实战干货: RBAC权限控制概念的理解
- 通知:Spring Cloud Alibaba 仓库迁移
- 30 分钟让你掌握 Git 的黑魔法
- post json 提示远程服务器500_解决WinServer2012R2服务器远程提示“参数错误”
- opencv读取中文路径图片