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实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
python实现停车管理系统
Nov 30 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
关于Python turtle库使用时坐标的确定方法
Mar 19 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
深入了解Python 方法之类方法 & 静态方法
Aug 17 Python
python“静态”变量、实例变量与本地变量的声明示例
Nov 13 Python
python计算列表元素与乘积详情
Aug 05 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php下使用以下代码连接并测试
2008/04/09 PHP
PHP中使用cURL实现Get和Post请求的方法
2013/03/13 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
gulp加批处理(.bat)实现ng多应用一键自动化构建
2017/02/16 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
彻底解决Python包下载慢问题
2020/11/15 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
自荐信不宜过于夸大
2013/11/06 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
党员进社区活动总结
2015/05/07 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
2016年优秀班主任先进事迹材料
2016/02/26 职场文书
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle