『心善渊』Selenium3.0基础 — 15、Selenium对多窗口的操作
1、多标签/多窗口之间的切换
(1)多标签/多窗口场景:
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如果继续操作原来的页面会报错的。这时候就就时多标签或窗口的情况,即识别切换句柄。
(2)操作方法:
switch_to.window()方法:切换窗口。可以实现在不同的窗口之间切换。current_window_handle: 获得当前窗口句柄。window_handles: 获取所有窗口句柄。
提示:句柄就可以理解成浏览器窗口的
id值。
(3)操作说明:
- 获取所有窗口的句柄
handles = driver.window_handlers
调用该方法会得到一个列表,在Selenium运行过程中的每一个窗口,都有一个对应的值存放在里面。
(换句话说,有多少个窗口,就有多少个句柄) - 通过窗口的句柄进入的窗口
driver.switch_to_window(handles[n])
2、句柄练习
"""
1.学习目标:
必须掌握web中多窗口切换方法
2.语法(操作步骤)
2.1 获取当前窗口句柄
driver.current_window_handle
2.2 点击页面中的超链接触发多窗口
2.3 获取所有窗口句柄
driver.window_handles
2.4 进入新窗口
switch_to.window(handles[1])
2.5 操作新窗口中的元素
按实际工作需求编写
2.6 退出新窗口
switch_to.window(handles[0])
3.需求
在页面中,实现多窗口切换。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开我的Python文档页面
url = "https://blog.csdn.net/Liuyuelinjiayou/article/details/105789238"
driver.get(url)
sleep(2)
# 4. 多窗口切换操作
# 4.1 获取当前窗口句柄
handle = driver.current_window_handle
print('点击之前的窗口句柄是:', handle)
print('点击前的url:', driver.current_url)
# 4.2 点击页面中的超链接触发多窗口
driver.find_element_by_link_text("PyCharm下载与安装").click()
sleep(2)
# 4.2 获取所有窗口句柄
handles = driver.window_handles
# 4.3 进入新窗口
driver.switch_to.window(handles[1])
print('点击之后浏览器所有的窗口句柄是:', handles)
print('点击后的url:', driver.current_url)
# 4.5 退出新窗口
# 你需要退到哪个窗口就写哪个窗口的handle索引
# 因为handle在上边赋值等于第一个窗口了,这里就可以写handle
# 也可以写handles[0]
driver.switch_to.window(handle)
sleep(10)
# 5.关闭浏览器
driver.quit()
"""
输出结果:
点击之前的窗口句柄是: CDwindow-6F1E6437F354913663E6A7E5A1486784
点击前的url: https://blog.csdn.net/Liuyuelinjiayou/article/details/105789238
点击之后浏览器所有的窗口句柄是: ['CDwindow-6F1E6437F354913663E6A7E5A1486784', 'CDwindow-48640D53F053821ED38D21B87E549A73']
点击后的url: https://blog.csdn.net/Liuyuelinjiayou/article/details/105729957
"""
『心善渊』Selenium3.0基础 — 15、Selenium对多窗口的操作的更多相关文章
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作
目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...
- 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件
目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...
- 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍
目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...
- 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)
目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...
- 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载
目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...
- 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API
目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...
- 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解
目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...
- 『心善渊』Selenium3.0基础 — 20、Selenium对Cookie的操作
目录 1.Cookie介绍 2.Session介绍 3.Cookie工作原理图解 4.Cookie内容参数说明 5.Selenium操作Cookie的API 6.Selenium操作Cookie的示例 ...
随机推荐
- mysql 格式化 取日期
- log日志重复输出问题(没弄明白原因)
在别的模块调用定义好的函数 输出的日志出现第一次输出输出一条,第二次输出输出两条...的情况 最后在定义函数处remove了句柄 引用了https://blog.csdn.net/huilan_sam ...
- ES6学习-4 解构赋值(1)数组的解构赋值
解构赋值是ES6很大的一个提升,为我们带来了很多方便,但用不好,会使程序的可读性变差,所以用时要注意,尽量保持程序的易读性. 数组解构赋值 在JS没有支持解构赋值之前,我们声明几个变量并赋值通常都是像 ...
- [bug] IDEA 右侧模块灰色
参考 https://blog.csdn.net/weixin_44188501/article/details/104717177
- Deepin深度应用商店和系统更新不正常的解决方法
Deepin深度应用商店和系统更新不正常的解决方法 2020-02-04 10:25:09作者:i8520稿源:深度站 如果你的Deepin深度应用商店和系统更新不正常,可采用以下方法来解决问题. 解 ...
- 分布式存储ceph---部署ceph(2)
一.部署准备 准备5台机器(linux系统为centos7.6版本),当然也可以至少3台机器并充当部署节点和客户端,可以与ceph节点共用: 1台部署节点(配一块硬盘,运行ceph-depoly) 3 ...
- 永远的Ace 团队作业4—团队项目需求建模与系统设计(1)
项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST/ 这个作业要求链接 https://www.cnblogs.com/nwnu-da ...
- NOIP模拟5 T2
题面:求出满足以下条件的 n*m 的 01 矩阵个数: (1)第 i 行第 1~li 列恰好有 1 个 1 (li+1到ri-1不能放1) (2)第 i 行第 ri~m 列恰好有 1 个 1. ...
- OneFlow 概念清单
OneFlow 概念清单 本文将对 OneFlow 中涉及到的,常用的一些概念/名词做一个概括性的解释.主要内容针对算法工程师和框架开发者分为以下两部分: 算法开发 框架开发 在算法开发部分,将解释深 ...
- 稀疏自编码器及TensorFlow实现
自动编码机更像是一个识别网络,只是简单重构了输入.而重点应是在像素级重构图像,施加的唯一约束是隐藏层单元的数量. 有趣的是,像素级重构并不能保证网络将从数据集中学习抽象特征,但是可以通过添加更多的约束 ...