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实现排序算法
Feb 14 Python
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
python删除特定文件的方法
Jul 30 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Python守护线程用法实例
Jun 23 Python
python交互式图形编程实例(一)
Nov 17 Python
Python分析学校四六级过关情况
Nov 22 Python
几种实用的pythonic语法实例代码
Feb 24 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
Django 再谈一谈json序列化
Mar 16 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
php array_flip() 删除数组重复元素
2009/01/14 PHP
PHP操作xml代码
2010/06/17 PHP
PHP数据类型的总结分析
2013/06/13 PHP
php 发送带附件邮件示例
2014/01/23 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
vue最简单的前后端交互示例详解
2018/10/11 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
Django数据统计功能count()的使用
2020/11/30 Python
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
如何现实servlet的单线程模式
2014/08/05 面试题
集体生日活动方案
2014/08/18 职场文书
2015年妇委会工作总结
2015/05/22 职场文书