自动化测试基础篇--Selenium多窗口、句柄问题
有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。
一、认识多窗口
1、这里以赶集网为例,打开赶集网http://cd.ganji.com/,点击工作,就会发现会重新打开一个窗口;
二、获取当前窗口句柄
1.元素有属性,浏览器的窗口其实也有属性的,只是你看不到,浏览器窗口的属性用句柄(handle)来识别。
2.人为操作的话,可以通过眼睛看,识别不同的窗口点击切换。但是脚本没长眼睛,它不知道你要操作哪个窗口,这时候只能句柄来判断了。
3.获取当前页面的句柄:browser.current_window_handle
4.执行结果
三、获取所有窗口句柄
1、获取所有窗口句柄:brows.window_handles
2、执行结果
四、切换句柄
方法一:
1.循环判断是否与首页句柄相等;
2.如果不等,说明是新页面的句柄;
3.获取的新页面句柄后,可以切换到新打开的页面上;
4.打印新页面的title,看是否切换成功。
执行结果
方法二:
直接获取all_h这个list数据里面第二个hand的值:all_h[i]
执行结果
五、关闭新窗口,返回到原来的窗口
1.打开新页面后,其实只想验证新页面跳转对不对,这里可以做个简单的验证,获取当前页面的title验证;
2.验证完后切关闭新窗口;
3.切回句柄到首页;
4.打印当前页面的句柄,看是否切换到首页了。
执行结果
六、参考代码
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : handles.py # @Software: PyCharm import time from selenium import webdriver url = 'http://cd.ganji.com/' browser = webdriver.Firefox() browser.get(url) time.sleep(5) # 获取当前页面的窗口句柄 handle = browser.current_window_handle print(handle) # 获取所有窗口句柄 browser.find_element_by_link_text('成都招聘').click() handles = browser.window_handles print(handles) # 方法一:判断句柄是否与首页相等 for i in handles:if i != handle:browser.switch_to.window(i)print(browser.title)browser.close()browser.switch_to.window(handle)print(browser.title) # 方法二:直接获取list列表里面的值,取值handles[i] # browser.switch_to.window(handles[0]) # print(browser.title) # 退出 browser.quit()
转载于:https://www.cnblogs.com/chenlimei/p/10484231.html
自动化测试基础篇--Selenium多窗口、句柄问题相关推荐
- 自动化测试基础篇--Selenium框架设计(POM)
一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...
- 自动化测试基础篇--Selenium浏览器操作
Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退.前进按钮等. 一.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸打开,让 ...
- 自动化测试基础篇--Selenium发送测试报告邮件
发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件.其中MIME ...
- 自动化测试基础篇--Selenium中数据参数化之TXT
一.搜索参数化 在TXT文件中保存需要搜索的内容: 测试代码: 1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 #@File : txt.py 4 ...
- 修改pom文件_自动化测试基础篇:Selenium 框架设计(POM)
(给Python开发者加星标,提升Python技能) 来源: 叁藏法师 https://www.cnblogs.com/sanzangTst/p/8376550.html [导语]Selenium是 ...
- 《手把手教你》系列基础篇之2-python+ selenium自动化测试-打开和关闭浏览器(详细)
简介 本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriv ...
- 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础
第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1 初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...
- Java+Selenium3基础篇5-第一个自动化测试脚本
前面几篇我们介绍了环境搭建和三大浏览器的启动方法,这篇文章我们介绍第一个自动化测试脚本.我的个人经验是,自动化脚本编写比较容易,最大的困难去如何去写测试断言.自动化测试,最重要的还是落在测试上面,而不 ...
- 软测入门(三)Selenium(Web自动化测试基础)
Selenium(Web端自动测试) Selenium是一个用于Web应用程序测试的工具:中文是硒 开源 跨平台:linux.windows.mac 核心:可以在多个浏览器上进行自动化测试 多语言 S ...
最新文章
- java 邮件 内容_JAVA怎么获取邮件内容
- python命令式编程的概念,【Python】十分钟学会函数式编程
- 【MFC】具有提示功能的工具栏
- 【JavaScript】请求数据时,添加时间戳,避免浏览器缓存
- 一直苦于没有好的资产管理软件,GLPI能解决吗?
- Apache Derby数据库用户和权限
- LeetCode 77 组合
- 苹果CEO库克改名字了?都是因为他...
- Sentinel服务熔断只配置blockHandler_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0051
- 含蓄:为彼此的交往留下余地 — 《别输在不会表达上》
- matlab2012b破解版安装
- Python-URL编码和URL解码方法
- Redis雪崩效应的解决方案(转)
- 怎么看计算机配件型号,操作方法:如何查看CPU型号,教您如何通过CPU型号[图形]识别计算机的性能...
- 使用STN的行人属性识别
- Python计算贝塔系数和夏普比率
- mysql聚簇索引和非聚簇索引的区别_聚簇索引与非聚簇索引的区别
- python pandas dataframe 不显示索引_Python DataFrame 设置输出不显示index(索引)值的方法...
- YOLOv5 anchor 编码(label assign)方式详解
- 视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop
热门文章
- python print_Python print()
- python子进程异常结束_Python子进程
- java 防止sql注入_Java中SQL注入以及如何轻松防止它
- kotlin null_Kotlin Null安全– Kotlin可空
- 迅捷cad_迅捷属性
- jqueryui时间插件_jQueryUI菜单插件教程示例
- snackbar_Android Snackbar示例教程
- C# 视频播放控件 wmp、vlc、aplayer
- Python装饰器之一
- 前端笔记----jquery入门知识点总结 (转)