有时我们在打开浏览器浏览网页时,当点击网页上某些链接时,它不是直接在当前页面上跳转,而是重新打开一个新标签页面,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。

一、认识多窗口

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多窗口、句柄问题相关推荐

  1. 自动化测试基础篇--Selenium框架设计(POM)

    一.自动化测试框架 感谢木棉花的漂泊分享,内容转自链接:http://www.cnblogs.com/fengyiru6369/p/8053035.html 1.什么是自动化测试框架 简单来说,自动化 ...

  2. 自动化测试基础篇--Selenium浏览器操作

    Selenium 主要提供的是操作页面上各种元素的方法,但它也提供了操作浏览器本身的方法,比如浏览器的大小以及浏览器后退.前进按钮等. 一.控制浏览器窗口大小 有时候我们希望能以某种浏览器尺寸打开,让 ...

  3. 自动化测试基础篇--Selenium发送测试报告邮件

    发邮件需要用到python两个模块,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件.其中MIME ...

  4. 自动化测试基础篇--Selenium中数据参数化之TXT

    一.搜索参数化 在TXT文件中保存需要搜索的内容: 测试代码: 1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 #@File : txt.py 4 ...

  5. 修改pom文件_自动化测试基础篇:Selenium 框架设计(POM)

    (给Python开发者加星标,提升Python技能) 来源:  叁藏法师 https://www.cnblogs.com/sanzangTst/p/8376550.html [导语]Selenium是 ...

  6. 《手把手教你》系列基础篇之2-python+ selenium自动化测试-打开和关闭浏览器(详细)

    简介 本节介绍如何初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打开fiefox浏览器.首先需要去下载一个driver插件geckodriv ...

  7. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  8. Java+Selenium3基础篇5-第一个自动化测试脚本

    前面几篇我们介绍了环境搭建和三大浏览器的启动方法,这篇文章我们介绍第一个自动化测试脚本.我的个人经验是,自动化脚本编写比较容易,最大的困难去如何去写测试断言.自动化测试,最重要的还是落在测试上面,而不 ...

  9. 软测入门(三)Selenium(Web自动化测试基础)

    Selenium(Web端自动测试) Selenium是一个用于Web应用程序测试的工具:中文是硒 开源 跨平台:linux.windows.mac 核心:可以在多个浏览器上进行自动化测试 多语言 S ...

最新文章

  1. java 邮件 内容_JAVA怎么获取邮件内容
  2. python命令式编程的概念,【Python】十分钟学会函数式编程
  3. 【MFC】具有提示功能的工具栏
  4. 【JavaScript】请求数据时,添加时间戳,避免浏览器缓存
  5. 一直苦于没有好的资产管理软件,GLPI能解决吗?
  6. Apache Derby数据库用户和权限
  7. LeetCode 77 组合
  8. 苹果CEO库克改名字了?都是因为他...
  9. Sentinel服务熔断只配置blockHandler_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0051
  10. 含蓄:为彼此的交往留下余地 — 《别输在不会表达上》
  11. matlab2012b破解版安装
  12. Python-URL编码和URL解码方法
  13. Redis雪崩效应的解决方案(转)
  14. 怎么看计算机配件型号,操作方法:如何查看CPU型号,教您如何通过CPU型号[图形]识别计算机的性能...
  15. 使用STN的行人属性识别
  16. Python计算贝塔系数和夏普比率
  17. mysql聚簇索引和非聚簇索引的区别_聚簇索引与非聚簇索引的区别
  18. python pandas dataframe 不显示索引_Python DataFrame 设置输出不显示index(索引)值的方法...
  19. YOLOv5 anchor 编码(label assign)方式详解
  20. 视频教程-Ps教程之神奇的Photoshop自动化技术-Photoshop

热门文章

  1. python print_Python print()
  2. python子进程异常结束_Python子进程
  3. java 防止sql注入_Java中SQL注入以及如何轻松防止它
  4. kotlin null_Kotlin Null安全– Kotlin可空
  5. 迅捷cad_迅捷属性
  6. jqueryui时间插件_jQueryUI菜单插件教程示例
  7. snackbar_Android Snackbar示例教程
  8. C# 视频播放控件 wmp、vlc、aplayer
  9. Python装饰器之一
  10. 前端笔记----jquery入门知识点总结 (转)