📅  最后修改于: 2023-12-03 15:00:32.238000             🧑  作者: Mango
在Selenium中,WebDriver是操作浏览器的核心。有时候我们需要在多个窗口之间进行切换,这时就需要调用 driver.get_window_handle()
和driver.get_window_handles()
方法。
driver.get_window_handle()
方法返回当前窗口的句柄(handle)。窗口句柄是一个唯一标识符,用来定位浏览器中的窗口。一般情况下,当前窗口的句柄是第一个打开的窗口。
语法:
current_window_handle = driver.get_window_handle()
用法示例:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
current_window_handle = driver.get_window_handle()
print("当前窗口句柄为:%s" % current_window_handle)
输出结果:
当前窗口句柄为:CDwindow-0F14EDB6BE9441306F3B4E4AE4FCD0DB
driver.get_window_handles()
方法返回所有窗口的句柄。这些句柄存储在一个Python列表中,列表的每一个元素都是一个字符串类型的窗口句柄。
语法:
all_window_handles = driver.get_window_handles()
用法示例:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
all_window_handles = driver.get_window_handles()
print("所有窗口句柄为:%s" % all_window_handles)
输出结果:
所有窗口句柄为:['CDwindow-0F14EDB6BE9441306F3B4E4AE4FCD0DB']
在调用driver.get_window_handle()
方法和driver.get_window_handles()
方法之后,我们就可以开始在窗口之间进行切换了。
切换到新窗口:
from selenium import webdriver
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com/")
# 打开一个新窗口
driver.execute_script('window.open("http://www.sogou.com");')
# 获取所有窗口句柄
all_window_handles = driver.get_window_handles()
# 切换到新窗口
driver.switch_to.window(all_window_handles[1])
切换回原来的窗口:
from selenium import webdriver
driver = webdriver.Chrome()
# 打开百度首页
driver.get("https://www.baidu.com/")
# 打开一个新窗口
driver.execute_script('window.open("http://www.sogou.com");')
# 获取所有窗口句柄
all_window_handles = driver.get_window_handles()
# 切换到新窗口
driver.switch_to.window(all_window_handles[1])
# 切换回原来的窗口
driver.switch_to.window(all_window_handles[0])
注意事项:
NoSuchWindowException
异常。NoSuchWindowException
异常。NoSuchWindowException
异常。本文介绍了Selenium中的 driver.get_window_handle()
和driver.get_window_handles()
方法,以及如何在多个窗口之间切换。这些方法在处理需要在不同窗口之间进行操作的场景非常有用。