以编程方式列出打开的浏览器标签页

13 投票
3 回答
5571 浏览
提问于 2025-04-17 02:59

有没有办法通过编程的方式获取浏览器中打开的标签页列表,并且按顺序排列呢?

比如说,假设你打开了谷歌浏览器,并且有两个标签页。
在程序中,可能会有一行代码像这样:

tabs_list = list_tabs(hwnd)

...其中 hwnd 是整个 Chrome 窗口的句柄,而 tabs_list 是一个字典,可能长得像这样:

{
  0 : 'http://stackoverflow.com/',
  1 : 'http://www.otherstufff.com/'
}

(...或者也可以根据窗口的标题来获取,而不是网址)

如果可以的话,那么就可以通过 Python 脚本用键盘命令来切换到其中一个标签页,比如用控制键(CTRL)加 1 或者控制键加 2。


后来又添加了一些说明来帮助理解:想象一下一个本地的 wxPython 应用程序,你已经知道如何从这个本地运行的 wxPython 应用中激活同一台电脑上的 Chrome 实例,而这个浏览器实例有多个标签页打开。现在你想确保某个特定的标签页是当前选中的,这样才能与正在显示的网页进行互动(比如使用 CTRL-A 和 CTRL-C 来复制内容)。这个问题不是关于如何发出键盘命令,这个已经知道了,问题是如何获取打开的标签页列表,如果可能的话,谢谢。

3 个回答

2

这不可能。首先,你没有说明你在开发什么应用,但如果你是用Python来做网站的后台,那么它只是一个服务器端的语言,并不知道什么是“浏览器”。服务器只是把信息输出给浏览器,仅此而已。而我也不认为用像JavaScript这样的客户端语言能做到这一点,因为如果可以的话,会涉及到严重的安全和隐私问题。

补充一下:如果你是在开发一个Chrome插件,那可能情况就完全不同了。但那就涉及到Chrome的API,而你的标签用错了,因为“Python”本身是做不到这一点的。

12

虽然不确定你想要使用的操作系统是什么,但在Mac OS X上你可以这样做:

>>> from appscript import *
>>> map(lambda x: x.title(), app('Google Chrome').windows[0].tabs())
[u'Stack Overflow', u'Google']

在Windows上,你可以考虑使用Python来进行OLE自动化。

撰写回答