Python3 Selenium多窗口切换
Python3 Selenium多窗口切换
以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接。
在WebDriver中封装了获取当前窗口句柄方法和获取所有窗口句柄的方法以及切换指定句柄窗口的方法;
(句柄:英文handle,窗口的唯一识别码)
方法:
1). driver.current_window_handle --> 获取当前窗口句柄
2). driver.window_handles --> 获取所有窗口句柄
3). driver.switch_to.window(handle) --> 切换指定句柄窗口
import time
from selenium import webdriver # 创建Chrome浏览器驱动对象
driver = webdriver.Chrome()
# 加载腾讯网页面
driver.get('http://www.qq.com/')
# 窗口最大化
driver.maximize_window() time.sleep(3)
# 切换窗口
"""
1. 获取腾讯首页当前窗口句柄
2. 点击腾讯首页页面中新闻中心链接
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到新闻中心_腾讯网
5. 点击新闻中心_腾讯网页面第一个新闻链接,打开新闻详情页
"""
current_handle = driver.current_window_handle
print('当前窗口句柄为:', current_handle) # 定位-点击腾讯首页页面中新闻中心_腾讯网链接
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/ul/li[1]/a').click() # 获取所有窗口句柄
handles = driver.window_handles
print('所有窗口句柄为:', handles)
for handle in handles:
print('遍历窗口为:', handle)
if handle != current_handle:
# 切换到新闻中心_腾讯网
driver.switch_to.window(handle)
# 点击新闻中心第一个新闻链接,打开新闻详情页
driver.find_element_by_xpath('//*[@id="subHot"]/h2/a').click() time.sleep(3) # 关闭Chrome浏览器
driver.quit()
这是常用的方法,以下是另外一种方法,简单
import time
from selenium import webdriver # 创建Chrome浏览器驱动对象
driver = webdriver.Chrome()
# 加载腾讯网页面
driver.get('http://www.qq.com/')
# 窗口最大化
driver.maximize_window() time.sleep(3)
# 切换窗口
"""
1. 获取腾讯首页当前窗口句柄
2. 点击腾讯首页页面中新闻中心链接
3. 获取所有窗口句柄
4. 遍历判断窗口句柄并切换到新闻中心_腾讯网
5. 点击新闻中心_腾讯网页面第一个新闻链接,打开新闻详情页
"""
current_handle = driver.current_window_handle
print('当前窗口句柄为:', current_handle) # 定位-点击腾讯首页页面中新闻中心_腾讯网链接
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div/ul/li[1]/a').click() # 获取所有窗口句柄
handles = driver.window_handles
print('所有窗口句柄为:', handles)
driver.switch_to.window(handles[-1])
# 点击新闻中心第一个新闻链接,打开新闻详情页
driver.find_element_by_xpath('//*[@id="subHot"]/h2/a').click() time.sleep(3) # 关闭Chrome浏览器
driver.quit()
Python3 Selenium多窗口切换的更多相关文章
- python3 + selenium 之窗口切换
窗口切换 此代码来源学习后对淘宝操作实践记录: 以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在 ...
- Python+Selenium学习--窗口切换及操作元素
场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...
- selenium webdriver窗口切换(上)
selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...
- selenium webdriver窗口切换(下)
多窗口切换有时候需要在不同的窗口切换,从而操作不同的窗口上的元素.在selenium1.0 中这个问题比较难处理.但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口. ...
- Selenium 多窗口切换
我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...
- Selenium多窗口切换代码
# #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Time : 2020/7/31 16:05 # @Author : Gengwu # @FileNam ...
- python之selenium多窗口切换
前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...
- selenium多窗口切换定位
from selenium import webdriverimport unittest,time,refrom selenium.webdriver.common.keys import Keys ...
- selenium 多窗口切换(windows)
在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...
随机推荐
- MySQL集群结构说明
在以前,数据库的集群配置一直很难,难点在于MySQL主从结构的高可用和读写分离.万幸的是,Galera/GR的出现,让整个集群的配置都极大程度地简化了. 以下是一个简单的MySQL集群拓扑图: 1.M ...
- MySQL中间件之ProxySQL(10):读写分离方法论
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.不同类型的读写分离 数据库中间件最基本的功能就是实现读写分离,Pr ...
- MySQL系列详解四:MySQL事务-技术流ken
MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...
- linux内核源码目录结构分析
原文地址 /arch.arch是architecture的缩写.arch目录下是好多个不同架构的CPU的子目录,譬如arm这种cpu的所有文件都在arch/arm目录下,X86的CPU的所有文件都在a ...
- 响应者链UIResponder-扩大UIButton的点击范围
在开发中,我们经常看到有按钮等的点击,会出现响应事件.按钮->view->ViewController->UIWindow->UIApplication,这就形成了一个响应链. ...
- IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity
IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release ...
- nginx配置虚拟机
在/usr/local/nginx/conf目录下nginx.conf文件是nginx的配置文件. 一.通过端口号区分虚拟机 在nginx.conf文件中添加一个Service节点,修改端口号: se ...
- (5)Microsoft office Word 2013版本操作入门_标尺
1.标尺 :左缩进,右缩进,悬挂缩进,首行缩进,阴影部分 可以左右拖拽调整边缘. 1.1 左缩进:默认缩进所在的段落,要缩进多段则需要多段落选中, 后拖动左缩进. 1.2 首行缩进缩进或者突出所选的 ...
- Java高并发--CPU多级缓存与Java内存模型
Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 CPU多级缓存 为什么需要CPU缓存:CPU的频率太快,以至于主存跟 ...
- AnnotationConfigBeanDefinitionParser are only available on JDK 1.5 and higher
報錯: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML ...