1、多标签/多窗口之间的切换

(1)多标签/多窗口场景

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如果继续操作原来的页面会报错的。这时候就就时多标签或窗口的情况,即识别切换句柄。

(2)操作方法:

  • switch_to.window()方法:切换窗口。可以实现在不同的窗口之间切换。
  • current_window_handle: 获得当前窗口句柄。
  • window_handles: 获取所有窗口句柄。

提示:句柄就可以理解成浏览器窗口的id值。

(3)操作说明

  1. 获取所有窗口的句柄

    handles = driver.window_handlers

    调用该方法会得到一个列表,在Selenium运行过程中的每一个窗口,都有一个对应的值存放在里面。

    (换句话说,有多少个窗口,就有多少个句柄)
  2. 通过窗口的句柄进入的窗口

    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对多窗口的操作的更多相关文章

  1. 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍

    目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...

  2. 『心善渊』Selenium3.0基础 — 11、Selenium对元素常用操作

    目录 1.Selenium对元素常用操作 2.Selenium对元素的其他操作 1.Selenium对元素常用操作 操作 说明 click() 单击元素 send_keys() 模拟输入 clear( ...

  3. 『心善渊』Selenium3.0基础 — 12、Selenium操作鼠标和键盘事件

    目录 (一)对鼠标的操作 1.鼠标事件介绍 2.ActionChains 类鼠标操作的常用方法 3.perform()方法 4.鼠标事件操作步骤 5.示例 (1)右键单击.左键双击 (2)鼠标拖拽动作 ...

  4. 『心善渊』Selenium3.0基础 — 1、Selenium自动化测试框架介绍

    目录 1.Selenium介绍 2.Selenium的特点 3.Selenium版本说明 4.拓展:WebDriver与Selenium RC的区别 5.Webdriver工作原理 1.Seleniu ...

  5. 『心善渊』Selenium3.0基础 — 2、Selenium测试框架环境搭建(Windows)

    目录 1.浏览器安装 2.浏览器驱动下载 (1)ChromeDriver for Chrome (2)Geckodriver for Firefox (3)IEDriverServer for IE ...

  6. 『心善渊』Selenium3.0基础 — 19、使用Selenium操作文件的上传和下载

    目录 1.Selenium实现文件上传 (1)页面中的文件上传说明 (2)文件上传示例 (3)总结 2.Selenium实现文件下载 (1)Firefox浏览器文件下载 1)操作步骤: 2)文件下载示 ...

  7. 『心善渊』Selenium3.0基础 — 3、使用Selenium操作浏览器对象的基础API

    目录 1.导入Selenium库 2.创建浏览器对象 3.浏览器窗口大小设置 4.浏览器位置设置 5.请求访问网址 6.浏览器页面前进.后退和刷新 7.关闭浏览器 相比于高大上的各种Selenium进 ...

  8. 『心善渊』Selenium3.0基础 — 4、Selenium基础元素定位详解

    目录 1.什么是元素定位 2.Selenium元素定位常用API (1)By_id 定位 (2)by_name 定位 (3)by_class_name 定位 (4)by_tag_name 定位 (5) ...

  9. 『心善渊』Selenium3.0基础 — 20、Selenium对Cookie的操作

    目录 1.Cookie介绍 2.Session介绍 3.Cookie工作原理图解 4.Cookie内容参数说明 5.Selenium操作Cookie的API 6.Selenium操作Cookie的示例 ...

随机推荐

  1. 完美解决MSSQL安装问题“Polybase要求安装Oracle JRE 7更新51(64位)”方案

    阅文时长 | 0.72分钟 字数统计 | 1164.8字符 主要内容 | 1.问题起因及解决方案 2.安装jdk-8u241-windows-x64 3.取消PolyBase查询服务 4.四.声明与参 ...

  2. MySQL配置HeartBeat实现心跳监控和浮动IP

    1. 初始化环境配置 /sbin/chkconfig --add mysqld /sbin/chkconfig mysqld on ln -s /usr/local/mysql/bin/mysql / ...

  3. ipmitool -I lanplus -H IPADDR -U USERNAME -P PASSWORD power reset

    IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标 ...

  4. 大文件查找 du -ahx . | sort -rh | head -10

    # cd /root@test-W330-C30:/# du -ahx . | sort -rh | head -58.2G .5.6G ./usr3.3G ./usr/share1.9G ./usr ...

  5. mysql左连接和分组实例

    例: 需求:查询A表中的所有列,并查询A表中的数据(ID)在B表中出现的次数,然后按model排序,最后所有结果在一张表中展示 A表结构: B表结构: ini_device_policy表中id与in ...

  6. IP子网如何划分?so easy!

    IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...

  7. 高可用 | Xenon:后 MHA 时代的选择

    原创:知数堂 | MySQL 高可用的选择 在 MySQL(5.5 及以下)传统复制的时代,MHA(Master High Availability)在 MySQL 高可用应用中非常成熟.在 MySQ ...

  8. libevent中的事件机制

    libevent是事件驱动的网络库,事件驱动是他的核心,所以理解事件驱动对于理解整个网络库有很重要的意义.       本着从简入繁,今天分析下单线程最简单的事件触发.通过sample下的event- ...

  9. Ascend Pytorch算子适配层开发

    Ascend Pytorch算子适配层开发 适配方法 找到和PyTorch算子功能对应的NPU TBE算子,根据算子功能计算出输出Tensor的size,再根据TBE算子原型构造对应的input/ou ...

  10. .NET平台系列24:从.NET Framework迁移到.NET Core/.NET5的技术指南

    系列目录     [已更新最新开发文章,点击查看详细] 本文讲解了在将代码从 .NET Framework 移植到 .NET(旧称为 .NET Core)时应考虑的事项. 对于许多项目,从 .NET ...