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

 

posted @ 2021-08-17 10:35  空-山-新-雨  阅读(390)  评论(0编辑  收藏  举报