『心善渊』Selenium3.0基础 — 15、Selenium对多窗口的操作
- 2021 年 7 月 4 日
- 筆記
- 测试基础必会技能 - Selenium测试框架
1、多标签/多窗口之间的切换
(1)多标签/多窗口场景:
在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作,如果继续操作原来的页面会报错的。这时候就就时多标签或窗口的情况,即识别切换句柄。
(2)操作方法:
switch_to.window()
方法:切换窗口。可以实现在不同的窗口之间切换。current_window_handle
: 获得当前窗口句柄。window_handles
: 获取所有窗口句柄。
提示:句柄就可以理解成浏览器窗口的
id
值。
(3)操作说明:
- 获取所有窗口的句柄
handles = driver.window_handlers
调用该方法会得到一个列表,在Selenium运行过程中的每一个窗口,都有一个对应的值存放在里面。
(换句话说,有多少个窗口,就有多少个句柄) - 通过窗口的句柄进入的窗口
driver.switch_to_window(handles[n])
2、句柄练习
"""
1.学习目标:
必须掌握web中多窗口切换方法
2.语法(操作步骤)
2.1 获取当前窗口句柄
driver.current_window_handle
2.2 点击页面中的超链接触发多窗口
2.3 获取所有窗口句柄
driver.window_handles
2.4 进入新窗口
switch_to.window(handles[1])
2.5 操作新窗口中的元素
按实际工作需求编写
2.6 退出新窗口
switch_to.window(handles[0])
3.需求
在页面中,实现多窗口切换。
"""
# 1.导入selenium
from selenium import webdriver
from time import sleep
# 2.打开浏览器
driver = webdriver.Chrome()
# 3.打开我的Python文档页面
url = "//blog.csdn.net/Liuyuelinjiayou/article/details/105789238"
driver.get(url)
sleep(2)
# 4. 多窗口切换操作
# 4.1 获取当前窗口句柄
handle = driver.current_window_handle
print('点击之前的窗口句柄是:', handle)
print('点击前的url:', driver.current_url)
# 4.2 点击页面中的超链接触发多窗口
driver.find_element_by_link_text("PyCharm下载与安装").click()
sleep(2)
# 4.2 获取所有窗口句柄
handles = driver.window_handles
# 4.3 进入新窗口
driver.switch_to.window(handles[1])
print('点击之后浏览器所有的窗口句柄是:', handles)
print('点击后的url:', driver.current_url)
# 4.5 退出新窗口
# 你需要退到哪个窗口就写哪个窗口的handle索引
# 因为handle在上边赋值等于第一个窗口了,这里就可以写handle
# 也可以写handles[0]
driver.switch_to.window(handle)
sleep(10)
# 5.关闭浏览器
driver.quit()
"""
输出结果:
点击之前的窗口句柄是: CDwindow-6F1E6437F354913663E6A7E5A1486784
点击前的url: //blog.csdn.net/Liuyuelinjiayou/article/details/105789238
点击之后浏览器所有的窗口句柄是: ['CDwindow-6F1E6437F354913663E6A7E5A1486784', 'CDwindow-48640D53F053821ED38D21B87E549A73']
点击后的url: //blog.csdn.net/Liuyuelinjiayou/article/details/105729957
"""