多测师讲解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 ...
随机推荐
- python3之range()
python range() 函数可创建一个整数列表,一般用在 for 循环中. 函数语法(左闭右开) Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以 ...
- Solon详解(三)- Solon的web开发
Solon详解系列文章: Solon详解(一)- 快速入门 Solon详解(二)- Solon的核心 Solon详解(三)- Solon的web开发 Solon详解(四)- Solon的事务传播机制 ...
- springboot入门遇到Whitelabel Error Page错误
错误页面: 解决方法: 启动类要放在最外层,改成下面的
- Apache 和 Nginx 下绑定域名
Apache 方法一 参考:链接 版本:2.3 配置文件位置:/usr/share/doc/httpd/httpd-vhosts.conf 添加域名和站点信息: vim /usr/share/doc/ ...
- [04] C# Alloc Free编程之实践
C# Alloc Free编程之实践 上一篇说了Alloc Free编程的基本理论. 这篇文章就说怎么具体做实践. 常识 之所以说是常识, 那是因为我们在学任何一门语言的时候, 都能在各种书上看到各种 ...
- .net MVC4.0项目发布到阿里云虚拟主机中遇到的问题。
正所谓学以致用,今天本来想做个bootstrap的demo发到服务器上看一下效果,结果服务器搞了半天,最终太晚了没能学到什么东西. 首先写好页面之后我做了一个MVC4.0的网站项目,然后把Bootst ...
- ch4inrulz: 1.0.1靶机渗透
ch4inrulz: 1.0.1靶机渗透 扫描主机端口,还行啦四个开放的端口,8011和80端口都运行着web服务. 80端口下的robots.txt告诉我们什么都没有 在8011端口的apache服 ...
- Fowsniff靶机
Fowsniff靶机 主机探测+端口扫描. 扫目录没扫到什么,看一下页面源代码. 网站主页告诉我们这个站现在不提供服务了,并且因为收到了安全威胁,攻击者将他们管理员信息发布到了社交媒体上. 大家要科学 ...
- 一台电脑配置多个GigHub账号
换了新的公司,原来的公司用SVN(比较老了),自己平时用码云(Gitee),新公司使用GitHub.前天通知我注册GitHub账号,但是并未通知用户名的事情(要求用自己的名字),原来的GitHub账号 ...
- 使用Azure Function玩转Serverless
Serverless&Azure Functions 通过无服务器计算,开发者无需管理基础结构,从而可以更快构建应用程序.通过无服务器应用程序,将由云服务提供商自动预配.缩放和管理运行代码所需 ...