python获取当前窗口句柄_人生苦短,我学python之python+selenium 多窗口、句柄(handle)...
转载自
http://www.cnblogs.com/yoyoketang/p/6128611.html
前言
有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。
一、认识多窗口
1.打开赶集网:http://bj.ganji.com/,点击招聘求职按钮会发现右边多了一个窗口标签
2.我们用代码去执行点击的时候,发现界面上出现两个窗口,如下图这种情况就是多窗口了。
3.到这里估计有小伙伴纳闷了,手工点击是2个标签,怎么脚本点击就变成2个窗口了,这个在2.1里面讲过,脚本执行是不加载配置的,
手工点击是浏览器默认设置了新窗口打开方式为标签,这里用鼠标按住点二个标签,拖拽出来,也就变成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-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://bj.ganji.com/")
h = driver.current_window_handle
print h # 打印首页句柄
driver.find_element_by_link_text("招聘求职").click()
all_h = driver.window_handles
print 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)
# 打印当前的title
print driver.title
python获取当前窗口句柄_人生苦短,我学python之python+selenium 多窗口、句柄(handle)...相关推荐
- shell调用python获取返回值_[linux的shell脚本调用python脚本的返回值][shell调python][ubuntu的shell调用python脚本得到返回值]...
最近搞个东西,需要写shell脚本,但在shell脚本里需要调用python并得到变量值,网上找了很多都是python调shell的,最后请教了一下郭总 知道了sys.argv的用法后才搞定了,在此感 ...
- python 量化分析 入门_【合辑·收藏】Python量化从入门到精通
原标题:[合辑·收藏]Python量化从入门到精通 引言 自2018年9月27日发第一篇推文以来,公众号"Python金融量化"专注于分享Python在金融量化领域的实战应用,坚持 ...
- python删除文件夹无法访问_人生苦短 我学Python——anaconda和Jupyter notebook安装使用...
一.人生苦短 我学Python 为什么学习Python? 1.应用范围广 很多网站是用Python开发的,比如豆瓣,还有YouTube等等. 2.效率高,和其他编程语言对比,可以用少得多的代码写出相同 ...
- python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】
[循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...
- python获取交易软件数据_几行Python代码,轻松获取美股阿里巴巴的交易数据
原创: 野马 菜鸟学Python 学Python可以干很多事情,比如爬虫,数据分析,机器学习,但是有一个非常小众的分支,不仅结合了两大高薪行业,而且还薪水非常诱人,就是量化金融岗位.目前Python已 ...
- 人生苦短我用python谁说的_人生苦短,我用 Python
我接触 Python 并不算早,第一次使用 Python 写生产系统的程序是2004年,那时候我已经有了几年的编程经验.当然了,现在这年头说早晚都不合适,昨天我说2000年就开始使用 Vim 编程了, ...
- python编程需要安装什么软件_[零基础学pythyon]安装python编程环境
注:推荐一种非常重要的学习方法 在我这里看文章的零基础朋友,乃至于非零基础的朋友,不要希望在这里学到很多高深的python语言技巧. "靠,那看你胡扯吗?" 非也.重要的是学会一些 ...
- python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...
前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...
- mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信
父窗体与子窗体之间的通信 在之前文章讲解windows程序设计过程中,我们曾描述了windows程序窗口之间通信与控制实现方法与过程,如窗体之间参数传递等.本文主要从Web程序开发前端JavaScri ...
最新文章
- JAVA入门到精通-第73讲-学生管理系统5-dao.sqlhelper
- 爬虫--用python中requests和urllib模块爬取图片
- 分享一些优秀有趣的博客
- linux安装包安装mysql5.7
- python 标准差内数据概率怎么求_Python-统计概率
- 已知向量坐标求三角形面积
- Selenium2+python自动化70-unittest之跳过用例(skip)
- 为什么B+树比B树更适合做数据库索引
- JVM内存管理------垃圾搜集器精解
- oracle bbed 使用,Oracle BBED使用 四步快速启动Oracle BBED
- java flux api,SpringBoot学习系列-WebFlux REST API 全局异常处理
- “返回指向栈空间的指针”的错误
- 初中计算机考试用什么软件,初中信息技术《PowerPoint软件》考过啥
- 如何成为云计算大数据Spark高手
- JAVA设计模式有意思的国外站点
- 【运维】PowerShell编程 目录文件相关方法的封装与案例详解
- 2021-02-10微软漏洞通告
- 《实用C语言编程》读书笔记
- 如何在线重装win7系统,一起来看看
- keil的debug使用
热门文章
- python真假命题_程序员冒死揭开家暴内幕:教女友学Python是道送命题!
- mysql视图有哪几种_数据库报表的视图有几种?每种视图的功能是什么?
- 给女朋友讲ActiveMQ是啥?
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener错误解决方案
- Eclipse实现hibernate反向工程:从数据库逆向生成实体类和hbm文件
- 01-JDBC学习手册:JDBC概述之JDBC发展、API、驱动
- java 管道设计_使用管道流实现Java 8阶段构建器
- 作业收缴系统设计手册(自写开源小系统)
- MySQL存储结构的使用
- Activiti工作流之网关