多测师讲解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 ...
随机推荐
- 做SQL解析时遇到的问题
相对于算术表达式,Json和XML等解析,SQL就比较复杂了. 举个例子来说:符号“(”是目前的SqlAnalyzer1.00中作为进入递归的标志之一,到“)”结束,中间是个查询语句.如果测试用例也是 ...
- CDH5.16.1集群企业真正离线部署
一.准备工作 1.离线部署主要分为三块: MySQL离线部署 CM离线部署 Parcel文件离线源部署 2.规划 节点 MySQL部署组件 Parcel文件离线源 CM服务进程 大数据组件 hadoo ...
- IEDA使用Tomcat后控制台中文出现乱码
如下图所示,Intellij IDEA显示中文为乱码, 根据Intellij IDEA控制台输出,Tomcat Log出现乱码,因此可以将问题定位到Tomcat上,具体解决方法: 第一步:打开Tom ...
- Hexo博客迁移
Hexo用户指南 - 博客迁移 GitHub+Hexo搭建博客的过程比较平滑,但是它的配置却非常耗时,一旦电脑出现问题或者需要在另外一台电脑上写博客,那么Hexo博客的迁移非常就让人头疼.下面参考其他 ...
- ThinkPHP6.0 判断是否有文件上传
有必要考虑不是post请求或没有指定enctype="multipart/form-data"的情况.如果是post请求还是设置了正确的编码,没有文件上传时 request()-& ...
- jenkins iOS自动打包
1.Jenkins配置 采用命令行下载配置Jenkins,防止产生权限问题 1)先安装brew,打开命令行,输入:/usr/bin/ruby -e "$(curl -fsSL https:/ ...
- Unit5:广播
静态广播 1.定义 public class TestBroadCast extends BroadcastReceiver { @Override public void onReceive(Con ...
- python列表,字典,元组常用方法和集合
python 目录 一.列表 列表格式 1.添加 列表取数(按照下标取,下标从0开始) 获取长度 append添加(直接添加) extend添加(分别添加) insert()insert(index, ...
- ⏰ Moment.js 宣布停止开发,现在该用什么?
本文整理自 Monent.js 官方英文公告 https://momentjs.com/docs/#/-project-status/ Moment.js 宣布停止开发,进入维护状态. 这是一个大而全 ...
- Docker镜像构建的两种方式(六)
镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...