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

作者:程序猿杂记 时间:2021-09-25 17:48:48 

前言:在页面操作过程中有时候点击某个链接会弹出新的窗口,但由于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)关闭浏览器详细介绍两种关闭窗口的区别

来源:https://blog.csdn.net/weixin_44110998/article/details/103687022

标签:Selenium,多窗口切换
0
投稿

猜你喜欢

  • Python栈的实现方法示例【列表、单链表】

    2023-07-20 15:51:42
  • 基于Python实现五子棋-(人机对战)

    2022-07-04 06:23:48
  • Flask模板继承深入理解与应用

    2021-01-24 12:31:40
  • 如何使用Python在2秒内评估国际象棋位置详解

    2023-08-10 14:26:46
  • React TypeScript 应用中便捷使用Redux Toolkit方法详解

    2023-08-11 09:48:21
  • 防止Access 2000密码被破译的方法

    2008-11-20 16:48:00
  • 你可能不知道的Python 技巧小结

    2022-12-18 07:08:10
  • python如何导入自己的模块

    2022-05-21 08:14:57
  • python模拟哔哩哔哩滑块登入验证的实现

    2021-05-01 22:23:40
  • Python实现快速保存微信公众号文章中的图片

    2021-02-18 23:03:25
  • Asp中通过简单的例子理解下ByVal和ByRef的用法

    2011-02-20 10:57:00
  • layer弹窗插件操作方法详解

    2023-08-09 14:30:14
  • 详解如何在python中读写和存储matlab的数据文件(*.mat)

    2023-06-27 22:24:32
  • 深入浅析Python 中 is 语法带来的误解

    2021-08-23 14:18:17
  • python多线程使用方法实例详解

    2023-08-18 17:34:00
  • Python爬虫爬取微博热搜保存为 Markdown 文件的源码

    2023-03-03 23:30:29
  • PyTorch实现卷积神经网络的搭建详解

    2021-03-12 16:36:03
  • 下一站:HandlerSocket!

    2011-04-11 09:02:00
  • Python通过2种方法输出带颜色字体

    2023-02-08 20:53:22
  • Python操作sqlite3快速、安全插入数据(防注入)的实例

    2022-04-22 16:38:14
  • asp之家 网络编程 m.aspxhome.com