Python Selenium获取浏览器窗口句柄与切换详解

顾言
顾言
发布时间:2026-10-14 | 2人浏览过
原创

本文解析Python中利用Selenium获取浏览器窗口句柄的方法。通过driver.window_handles获取所有窗口标识列表,并使用driver.switch_to.window切换至指定索引窗口,实现多标签页下的页面爬取与交互。

句柄(handle)是C++程序设计中经常提及的一个术语。它并不是一种具体的、固定不变的数据类型或实体,而是代表了程序设计中的一个广义的概念。句柄一般是指获取另一个对象的方法——一个广义的指针,它的具体形式可能是一个整数、一个对象或就是一个真实的指针,而它的目的就是建立起与被访问对象之间的惟一的联系

Selenium获取窗口句柄的方法

在Python自动化测试或爬虫场景中,常需使用Selenium库来操控浏览器窗口。

代码实现示例


from selenium import webdriver
import time

# chromedriver的绝对路径
# driver_path = r'D:\0SW\最临时软件\chromedriver.exe'
driver_path = r'D:\0SW\最临时软件\geckodriver.exe'

# 初始化一个driver,并且指定chromedriver的路径
# driver = webdriver.Chrome(executable_path=driver_path)
driver = webdriver.Firefox(executable_path=driver_path)

# 请求网页
driver.get("http://www.gsxt.gov.cn/index.html")

driver.execute_script("window.open('http://www.hao6v.com')")

# 打印窗口句柄
a = driver.window_handles
print(a)

# 切换窗口
driver.switch_to.window(driver.window_handles[1])

print(driver.current_url)
print(driver.page_source)

driver.switch_to.window(a[0]) # 选择第一个标签页 睡两秒 选择第二个标签页
time.sleep(2)
driver.switch_to.window(a[1])

窗口切换的关键操作

尽管浏览器前端已显示新打开的页面,但Selenium驱动对象(driver)当前仍停留在原始窗口上下文中,尚未自动切换。

若需在代码逻辑中操作新打开的页面并执行爬取任务,必须显式调用driver.switch_to.window方法,将当前操作焦点切换至目标窗口。

通过访问driver.window_handles属性,可以获取当前所有打开窗口的句柄列表,从而确定目标窗口在列表中的具体索引位置。

driver.window_handles返回一个列表,其中按窗口打开的先后顺序存储了各个窗口的唯一标识符(句柄)。

以上即为Python Selenium中获取及切换浏览器窗口句柄的核心步骤,希望能为相关技术学习提供参考。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表