007、多窗口切换 handle
一、多窗口切换 handle
current_window_handle 获取当前窗口句柄(handle)
window_handles 获取所有的句柄
switch_to.window() 切换句柄
close() 关闭其中一个句柄
链接标签 <a 有 target='_blank' 属性,一般都回打开新的 handle ;
要操作哪个标签,需要切换到相应的 handle
1、handle ,类似于新的标签页
2、链接标签 <a 有 target='_blank' 属性,会在新窗口打开网页,即生成新的 handle ;
示例代码如下:
# -*- coding:utf-8 -*-
# Author: Sky
# Email: 2780619724@qq.com
# Time: 2021/8/16 16:41
# Project: day01
# Module: study_02.py.py
# Environment: Python3.8.6 , Selenium3 环境 ( 3.141.0 版本)
# Environment: Chrome ( 92.0.4515.131, 正式版本) + chromedriver(92.0.4515.107版本)
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("http://49.235.92.12:8200/users/login/")
# 获取当前句柄handle
handle = driver.current_window_handle
print(handle)
# 点击 联系我们 链接
time.sleep(3)
driver.find_element_by_partial_link_text('联系我们').click()
# 获取所有句柄 handles,返回list
handles = driver.window_handles
print(handles)
# 打印当前窗口的url
print(f'切换handles前的url:{driver.current_url}')
# 切换到第二个窗口(联系我们窗口)
time.sleep(3)
driver.switch_to.window(handles[1])
# 验证是否切换过去了,打印当前的url地址
print(f'切换handles后的url:{driver.current_url}')
# 关闭新窗口,handle 所在的标签页
driver.close()
# 关闭之后,焦点还关闭的标签上,
# 如果不返回到存在的标签页,打印当前url会报错 ;
# NoSuchWindowException: Message: no such window: target window already closed
# from unknown error: web view not found
# print(driver.current_url)
# 回到首页
time.sleep(3)
# driver.switch_to.window(handles[0])
driver.switch_to.window(handle) # 此处handle是前面接收到的值
# 打印当前窗口的url
print(f'切回到首页的url:{driver.current_url}')
time.sleep(3)
driver.quit()
执行结果如下:
D:\SkyWorkSpace\WorkSpace\Web_AutoTest\Temp\day01\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Web_AutoTest/Temp/day01/ch_002/study_06.py
CDwindow-679C9A2B8E07AC93282DF512C835CDA0
['CDwindow-679C9A2B8E07AC93282DF512C835CDA0', 'CDwindow-F4C7F561372550C9A107DBF8E1234860']
切换handles前的url:http://49.235.92.12:8200/users/login/
切换handles后的url:https://www.cnblogs.com/yoyoketang/
切回到首页的url:http://49.235.92.12:8200/users/login/
Process finished with exit code 0