多测师讲解selenium ——切换窗口——打印句柄_高级讲师肖sir
(一)同一个窗口打开两个浏览器

from selenium import webdriver
from time import sleep
drvier=webdriver.Chrome()
url='http://www.baidu.com' #打开百度
drvier.get(url)
drvier.maximize_window()
sleep(2) #线程等待2秒
url='http://www.jd.com'
drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)
二、两个url打开两个窗口

from selenium import webdriver
from time import sleep
drvier=webdriver.Chrome()
url='http://www.baidu.com' #打开百度
drvier.get(url)
drvier.maximize_window()
js ='window.open("http://www.jd.com")'
drvier.execute_script(js)
三、打印title

结果:百度一下,你就知道
from selenium import webdriver
from time import sleep
drvier=webdriver.Chrome()
url='http://www.baidu.com' #打开百度
drvier.get(url)
drvier.maximize_window()
# sleep(2) #线程等待2秒
# url='http://www.jd.com'
# drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)
# drvier.maximize_window()
js ='window.open("http://www.jd.com")'
drvier.execute_script(js)
# #新开一个窗口
sleep(2)
title =drvier.title#获取到当前的窗口文本标题
print(title)#打印标题 百度一下,你就知道
(四)切换当前窗口定位

from selenium import webdriver
from time import sleep
drvier=webdriver.Chrome()
url='http://www.baidu.com' #打开百度
drvier.get(url)
drvier.maximize_window()
# sleep(2) #线程等待2秒
# url='http://www.jd.com'
# drvier.get(url) #打开京东(覆盖百度的窗口,在同一个窗口打开)
# drvier.maximize_window()
js ='window.open("http://www.jd.com")'
drvier.execute_script(js)
# #新开一个窗口
# sleep(2)
# title =drvier.title#获取到当前的窗口文本标题
# #print(title)#打印标题 百度一下,你就知道
# sleep(2)
drvier.find_element_by_id('key').send_keys('手机')
cl =drvier.find_element_by_css_selector('[class=text]')
cl.send_keys('手机')
xp=drvier.find_element_by_xpath('//*[@id="key"]').send_keys('手机')
#以上我们是定位不到内容,索引我们要切换窗口
五、切换句柄
简化版:

from selenium import webdriver
from time import sleep
drvier=webdriver.Chrome() #创建一个对象
url='http://www.baidu.com'
drvier.get(url) #打开百度
drvier.maximize_window() #创建最大化
sleep(2)
js ='window.open("http://www.jd.com")'
drvier.execute_script(js) #新开窗口打开jd
sleep(1)
headles =drvier.window_handles #获取所有窗口的句柄
drvier.switch_to.window(headles[-1])
# 通过 switch_to以句柄索引值为-1来切换-1的窗口
title1=drvier.title#获取标题
print(title1) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
sleep(2)
drvier.find_element_by_id('key').send_keys('手机')
讲解版:
rom selenium import webdriver
from time import sleep
drvier=webdriver.Chrome() #创建一个对象
url='http://www.baidu.com'
drvier.get(url) #打开百度
drvier.maximize_window() #创建最大化
sleep(2)
js ='window.open("http://www.jd.com")'
drvier.execute_script(js) #新开窗口打开jd
sleep(1)
#tile =drvier.title #获取当前窗口的标题
#print(tile) #当前的title:百度一下,你就知道
# # 获取当前窗口的句柄和获取所有窗口的句柄和切换窗口
#j =drvier.current_window_handle #获取当前窗口的句柄
#print(j) #CDwindow-49F4482A3D1C0713E1A63696416AF8EE
headles =drvier.window_handles #获取所有窗口的句柄
#print(headles)
# # ['CDwindow-3B7E08122DE1340AB96EF0676CB5C6B0',
# # 'CDwindow-24A5FFE06B543E9B63C3F011041E4309']
# '''如当前的窗口超过了2个则句柄对应的窗口会发生相对应的改变(索引位置)'''
# # 通过句柄来切换窗口
drvier.switch_to.window(headles[-1])
# 通过 switch_to以句柄索引值为-1来切换-1的窗口
title1=drvier.title#获取标题
print(title1) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
sleep(2)
drvier.find_element_by_id('key').send_keys('手机')

5、2
切换句柄练习题

1、先将所讲的内容进行复习
# 2、自己开三个窗口或者更多,
# 然后通过句柄的方式实现切换(理解句柄的索引改变问题)
# 3、完成以上事项的同学:
# 1、打开百度
# 2、打开京东
# 3、获取当前句柄
# 4、获取所有的句柄
# 5、通过for循环遍历来实现且到京东窗口且打印title
# '''
from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
url='http://www.baidu.com'
driver.get(url) #打开百度
driver.maximize_window()#窗口最大化
sleep(2)#线程等待2秒
#打开京东
jd='window.open("http://www.jd.com")'
driver.execute_script(jd)
sleep(2) #线程等待
dcs='window.open("http://gz.duoceshi.cn")'
driver.execute_script(dcs)
sleep(2) #线程等待
# title=driver.title #获取当前窗口的标题
# print(title) #百度的标题 百度一下,你就知道
# 获取当前窗口的句柄
hedl=driver.current_window_handle #获取当前窗口句柄
# print(hedl)
# sleep(1)
hendles=driver.window_handles#获取所有窗口句柄
# print(hendles)
for i in hendles:#遍历所有的窗口句柄
if i !=hedl: #如果当前变量的句柄不等于获取的单个句柄
driver.switch_to.window(i)
title =driver.title
print(title) #京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!
备注:
京东定位输入框

获取句柄,切换,在根据索引取窗口(0 表示第一个窗口, 1表示第二个窗口,-1表示最后一个窗口)

获取当前窗口 和 获取当前句柄



多测师讲解selenium ——切换窗口——打印句柄_高级讲师肖sir的更多相关文章
- 多测师讲解selenium—自动化测试课堂面试题总结—高级讲师肖sir
1.你有做过自动化?你用什么语言? python2.自动化中如何使用语言打开一个网址?浏览器,浏览器对应驱动,导入库,类,get,url3.在一个浏览器中打开多个窗口?open_windows dri ...
- 多测师讲解自动化测试_rf节课内容_高级讲师肖sir
*** Settings ***Library Selenium2LibraryLibrary OperatingSystem *** Variables ***${name} zhangsan@{l ...
- 多测师讲解ui自动化框架设计思想_高级讲师肖sir
UI自动化框架:UI自动化框架可以分为8个模块,conf.data.public.pageobject.testcase.runner.report.log.conf是用来储存系统环境.数据库.邮件的 ...
- 多测师讲解接口测试 _postman(下)_高级讲师肖sir
关联接口 定义:上个接口返回的参数作为下一个接口的入参 1)接口1:查询出所有的州,自治区,直辖市,省(且发送请求不需要入参) 接口url地址: http://www.webxml.com.cn/We ...
- 多测师讲解 自动化测试理论(1)_高级讲师肖sir
自动化测试理论什么是自动化测试?广义的:通过工具或程序替代或辅助人工测试的行为叫自动化测试狭义的:通过工具录制或编写脚本模拟手工测试的过程,通过回放或运行脚本执行测试用例,从而代替人工对系统的功能验证 ...
- 多测师讲解接口测试 _fiddler无法打开浏览器_高级讲师肖sir
错误现象: 打开fi'd'dler以后浏览器无法打开,关闭fiddler之后可以打开浏览器 解决方案: 1. 2. 在点击确定
- 多测师讲解接口测试 _postman(上)_高级讲师肖sir
Postman 一.Postman介绍 Postman是一个网页调试工具,也可以调试css.html Postman的操作环境 环境:Postman Mac.Windows X32.Windows X ...
- 多测师讲解自动化测试 _RF模拟鼠标悬停_高级讲师肖sir
test19 Open Browser https://www.ctrip.com/?sid=155952&allianceid=4897&ouid=index gc Maximize ...
- 多测师讲解自动化测试 _RF定位iframe框_高级讲师肖sir
Open Browser https://mail.163.com/ gc Maximize Browser Window sleep 2 #进入if框 Comment Input Text name ...
随机推荐
- 10行实现最短路算法——Dijkstra
今天是算法数据结构专题的第34篇文章,我们来继续聊聊最短路算法. 在上一篇文章当中我们讲解了bellman-ford算法和spfa算法,其中spfa算法是我个人比较常用的算法,比赛当中几乎没有用过其他 ...
- Robotframework自动化1-Windows环境搭建
前言: robotframework环境搭建-环境准备 1.python2,pip2 2.WxPython 3.Robot Framework 4.Robotframework-ride 5.RIDE ...
- 3.CDN加速简介
什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问 ...
- 小白的springboot之路(十七)、阿里云OSS 的使用
0-前言 项目中,文件服务必不可少,常用的有各云服务商的OSS服务(如阿里云OSS,腾讯云OSS,七牛云).自建(fastDFS.minio): 推荐:如果用云服务的话,阿里云OSS很方便,如果自建的 ...
- JDK15正式发布,新增功能预览!
JDK 15 在 2020 年 9 月 15 号正式发布了,这次发布的主要功能有: JEP 339:EdDSA 数字签名算法 JEP 360:密封类(预览) JEP 371:隐藏类 JEP 372:删 ...
- apache OS 10013 问题
问题描述 (OS 10013)通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次: make_sock: could not bind to address 0.0.0.0:80 解决方法 ...
- 我还在生产玩 JDK7,JDK 15 却要来了!
自从 JDK9 之后,每年 3 月与 9 月 JDK 都会发布一个新的版本,而2020 年 9 月即将引来 JDK15. 恰巧 IDEA 每四五个月会升级一个较大的版本,每次升级之后都会支持最新版本 ...
- Django request
''' 1.HttpRequest.GET 一个类似于字典的对象,包含 HTTP GET 的所有参数.详情请参考 QueryDict 对象. 2.HttpRequest.POST 一个类似于字典的对象 ...
- golang interface 类型学习
接口类型变量的内存结构 动态类型 动态值 对于动态类型指的是当其他非接口类型变量赋值给接口类型变量时,接口类型变量中的动态类型就是当前非接口类型 对于动态值指的就是当其他非接口类型变量赋值给接口类型变 ...
- Final终态类和Finally