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中为feedparser设置超时时间避免堵塞
Sep 28 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
深入源码解析Python中的对象与类型
Dec 11 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
Jul 08 Python
详解python中字典的循环遍历的两种方式
Feb 07 Python
Python中格式化format()方法详解
Apr 01 Python
python的文件操作方法汇总
Nov 10 Python
python绘制立方体的方法
Jul 02 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
python 发送和接收ActiveMQ消息的实例
Jan 30 Python
浅谈django 重载str 方法
May 19 Python
Python代码风格与编程习惯重要吗?
Jun 03 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
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
jquery实现input输入框实时输入触发事件代码
2014/01/28 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JS实现FLASH幻灯片图片切换效果的方法
2015/03/04 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
原JS实现banner图的常用功能
2017/06/12 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
Python实现简单字典树的方法
2016/04/29 Python
python:print格式化输出到文件的实例
2018/05/14 Python
详解Python3的TFTP文件传输
2018/06/26 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
成语的广告词
2014/03/19 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
环保公益策划方案
2014/08/15 职场文书
环境卫生整治简报
2015/07/20 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
Golang获取List列表元素的四种方式
2022/04/20 Golang