Selenium2+python自动化13-多窗口、句柄(handle)
前言
有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。
本篇以打开百度新闻页面搜索按钮上的链接页面为例,依次打开每个按钮,并检验测试结果。用脚本批量操作,可以减少重复劳动,重复的事情让脚本去执行吧!
一、定位一组元素
1.打开百度新闻页面:17http://news.baidu.com/17
2.定位搜索框上一排按钮网页、贴吧,知道等
3.定位一组元素方法在第八篇已经讲过,这里就不多讲,通过firebug可以查看他们有共同属性标签为a,且有个老爸为:<div class="tab">

二、获取当前窗口句柄
1.当点击百度新闻页面上“网页”按钮时,会打开一个新的窗口
2.人为操作的话,可以通过点击窗口切换到不同的窗口上,但是脚本它不知道你要操作哪个窗口,这时候只能获取窗口唯一的标识:句柄
3.获取当前页面的句柄:driver.current_window_handle
三、获取所有句柄
1.先通过css定位到所有按钮:".tab>a"
2.从定位的一组中随便取一个点击打开
3.然后获取当前页面的所有句柄,发现此时有两个了

四、切换句柄
1.循环判断是否与首页句柄相等
2.如果不等,说明是新页面的句柄
3.获取的新页面句柄后,可以切换到新打开的页面上
4.打印新页面的title,看是否切换成功
五、关闭新窗口,切回主页
1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证
2.验证完后切关闭新窗口
3.切回句柄到首页
4.打印当前页面的句柄,看是否切换到首页了
六、批量操作
1.把需要校验的结果放在list队列r里
2.for循环遍历执行每个按钮的点击操作
3.判断结果对应list里的每个结果
七、最终脚本
1.整理后最终脚本如下,结果如图所示
# coding:utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://news.baidu.com/")
driver.implicitly_wait(10)
# 获取当前窗口句柄
h = driver.current_window_handle
# 定位网页、贴吧等链接
s = driver.find_elements_by_css_selector(".tab>a")
r = [u"百度一下", u"贴吧", u"知道", u"音乐",
u"图片", u"视频", u"地图", u"百科", u"文库"]
for a, b in zip(s, r):
a.click()
text = a.text
time.sleep(2)
all_h = driver.window_handles
# 循环判断是否与首页句柄相等
for i in all_h:
if i != h:
driver.switch_to.window(i)
time.sleep(1)
print driver.title
if b in driver.title:
print(text+u"页面打开正常")
else:
print(text+u"页面测试失败")
driver.close() # 关闭当前页面
driver.switch_to.window(h) # 切回句柄到首页
driver.quit
Selenium2+python自动化13-多窗口、句柄(handle)的更多相关文章
- Selenium2+python自动化29-js处理多窗口
前言 在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解:Selenium2+python自动化13-多窗口.句柄(handle)),这样在多个窗口之间来回切换比较复杂,那么有没 ...
- Selenium2+python自动化29-js处理多窗口【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/js/ 前言 在打开页面上链接的时候,经常会弹出另外一个窗口(多窗口情况前面这篇有讲解: ...
- Selenium2+python自动化13-Alert
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...
- Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors
前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...
- Selenium2+python自动化61-Chrome浏览器(chromedriver)【转载】
前言 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrome浏览器版本号,对应的驱动文件版本号又不一样,如果版本号不匹配,是没法启动起来的. 一.Chrome遇到问题 1. ...
- Selenium2+python自动化23-富文本(自动发帖)
前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...
- Selenium2+python自动化24-js处理富文本(带iframe)
前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...
- Selenium2+python自动化7-xpath定位
前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...
- Selenium2+python自动化28-table定位
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- Selenium2+python自动化43-判断title(title_is)
From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...
随机推荐
- 用ABBYY提取文本和表格的方法
在ABBYY FineReader 12 OCR文字识别软件中,有一个插件ABBYY Screenshot Reader,通常情况下与ABBYY FineReader 12一起安装到计算机中,它是一款 ...
- HighCharts使用心得
HighCharts使用心得 前言: 之前很早的一个项目中使用过highcharts,感觉挺方便的,图表类型也比较丰富,而且还支持数据的下钻,但是如果投入商业使用的话还会有一些版权的问题,所以后来就使 ...
- mysql 启动 pid报错解决方法
在安装好mysqld的时候 启动的时候报错如下: [root@ mysql]# service mysqld start Starting MySQL.The server quit without ...
- SSIS 基础知识
微软 BI 系列随笔 - SSIS 2012 基础 - SSIS 基础知识 SSIS 介绍 SSIS - SQL Server Integration Services 是用于实现企业级数据集成和数据 ...
- Struts2实现简单的在线人数统计
用Strust2框架的知识简单实现一个统计在线人数的问题. 1 搭建开发环境:(配置文件,jar包等问题) 2 index.jsp <%@ page language="java&qu ...
- WebApi:过滤器的种类
WebApi:筛选器的种类 授权筛选器:这些筛选器用于实现IAuthorizationFilter和做出关于是否执行操作方法(如执行身份验证或验证请求的属性)的安全决策.AuthorizeAttrib ...
- flash 自定义右键功能
使用过程可能遇到的问题: MouseEvent.RIGHT_CLICK TypeError: Error #2007: 参数 type 不能为空. 首先在项目中设置编译参数. 如果是as项目,则在项目 ...
- 核心动画和UIView动画的区别
核心动画和UIView动画的区别 1.核心动画制作用在Layer 2.核心动画的修改的属性都是假象,他的真实位置没有发生变化()
- [ActionScript 3.0] 喷泉效果
pall为水珠影片剪辑 var count:int = 500; var zl:Number = 0.5; var balls:Array; balls = new Array(); for (var ...
- css学习笔记(6)
+++++++++++++++++ CSS HACK+++++++++++++++++IE6.0 能识别 _background:#ff00ff; *background:#ff00ff; +back ...