Python爬虫之Selenium多窗口切换的实现


Posted in Python onDecember 04, 2020

前言:在页面操作过程中有时候点击某个链接会弹出新的窗口,但由于Selenium的所有操作都是在第一个打开的页面进行的,这时就需要主机切换到新打开的窗口上进行操作。WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换。 以百度首页和百度注册页为例,在两个窗口之间的切换。

本章中用到的关键方法如下:

  • current_window_handle:获得当前窗口句柄
  • window_handles:返回所有窗口的句柄到当前会话
  • switch_to.window():用于切换到相应的窗口

跳转至注册页面,然后获取所有页面的句柄,并打印各个页面的title

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

time.sleep(2) #睡两秒,看一下效果

driver.find_element_by_link_text('登录').click()

time.sleep(2) #睡两秒,看一下效果

driver.find_element_by_link_text("立即注册").click()

time.sleep(2) #睡两秒,看一下效果

# 获得当前窗口句柄
sreach_windows = driver.current_window_handle

# 获得当前所有打开的窗口的句柄
all_handles = driver.window_handles
for handle in all_handles:
 if handle != sreach_windows:
  driver.switch_to.window(handle)
  print(driver.title)
 else:
  print('当前页面title:%s'%driver.title)

driver.quit()

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于Python爬虫之Selenium多窗口切换的实现的文章就介绍到这了,更多相关Selenium多窗口切换内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中Django框架利用url来控制登录的方法
Jul 25 Python
Python语言生成水仙花数代码示例
Dec 18 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
python实现银行管理系统
Oct 25 Python
python dataframe NaN处理方式
Dec 26 Python
python装饰器相当于函数的调用方式
Dec 27 Python
python opencv实现信用卡的数字识别
Jan 12 Python
Django与pyecharts结合的实例代码
May 13 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
使用pytorch 筛选出一定范围的值
Jun 28 Python
python用分数表示矩阵的方法实例
Jan 11 Python
如何基于python实现单目三维重建详解
Jun 25 Python
Python爬虫之Selenium实现键盘事件
Dec 04 #Python
python 爬虫请求模块requests详解
Dec 04 #Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 #Python
Selenium 配置启动项参数的方法
Dec 04 #Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 #Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 #Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 #Python
You might like
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
使用淘宝IP库获取用户ip地理位置
2013/10/27 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
脚手架vue-cli工程webpack的基本用法详解
2018/09/29 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
Python装饰器用法示例小结
2018/02/11 Python
基于Django用户认证系统详解
2018/02/21 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python文件读写常见用法总结
2019/02/22 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
文明村镇申报材料
2014/05/06 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL