You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu+Python3+Selenium+Chromium下如何获取Chrome当前活动标签页?

获取Chrome当前活动标签页(适配Selenium半自动化场景)

要获取Chrome中用户实际切换后的活动标签页(而非Selenium内部标记的“活动页”),最可靠的方式是利用Chrome DevTools Protocol (CDP),它能直接和Chrome内核交互,拿到浏览器真实的标签页状态。

两种场景的实现方案

场景1:Selenium启动的Chrome浏览器

如果你的Chrome是由Selenium启动的,直接通过CDP调用Target.getTargets接口就能筛选出活动标签页:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 启动Chrome浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# 模拟打开多个标签页(实际场景中由用户操作)
driver.get("https://www.google.com")
driver.execute_script("window.open('https://www.github.com');")
driver.execute_script("window.open('https://www.stackoverflow.com');")

# 调用CDP获取所有标签页/目标的信息
all_targets = driver.execute_cdp_cmd("Target.getTargets", {})

# 筛选出当前活动的页面标签页
active_tab = None
for target in all_targets["targetInfos"]:
    # 只筛选类型为page(排除后台服务、扩展等)且处于active状态的目标
    if target["type"] == "page" and target["active"]:
        active_tab = target
        break

if active_tab:
    print(f"当前活动标签页URL: {active_tab['url']}")
    print(f"当前活动标签页标题: {active_tab['title']}")
    print(f"标签页唯一ID: {active_tab['targetId']}")
else:
    print("未找到处于活动状态的标签页")

场景2:用户手动打开的Chrome浏览器

如果Chrome是用户手动打开的,需要先开启Chrome的远程调试模式,再让Selenium连接到这个浏览器实例:

  1. 开启远程调试:

    • Windows:右键Chrome快捷方式 → 属性 → 目标栏末尾添加 --remote-debugging-port=9222(注意前面有空格),点击确定后重启Chrome。
    • Mac:打开终端执行命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
    • Linux:终端执行命令:google-chrome --remote-debugging-port=9222
  2. Selenium连接并获取活动标签页:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置Chrome选项,连接到远程调试端口
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

# 连接到已打开的Chrome浏览器
driver = webdriver.Chrome(options=chrome_options)

# 同样调用CDP获取活动标签页
all_targets = driver.execute_cdp_cmd("Target.getTargets", {})
active_tab = None
for target in all_targets["targetInfos"]:
    if target["type"] == "page" and target["active"]:
        active_tab = target
        break

if active_tab:
    print(f"当前活动标签页URL: {active_tab['url']}")
    print(f"当前活动标签页标题: {active_tab['title']}")
else:
    print("未找到处于活动状态的标签页")

核心说明

  • Target.getTargets返回的targetInfos数组中,active字段对应Chrome真实的活动标签页状态,和用户手动切换的结果完全一致。
  • 整个过程不需要切换标签页,仅需读取状态即可,完全符合你的需求。
  • 如果后续需要和该标签页交互,可通过targetId调用Target.activateTarget接口,或通过窗口句柄切换,但这一步是可选的。

内容的提问来源于stack exchange,提问作者Massimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:57:30