以编程方式打开的浏览器选项卡列表

问题描述 投票:0回答:3

有没有一种方法可以通过索引以编程方式获取浏览器中打开的选项卡列表

例如,假设 Google Chrome 打开时有两个选项卡。
在程序中,有一行类似:

tabs_list = list_tabs(hwnd)

...其中 hwnd 是整个 Chrome 实例的窗口句柄,tabs_list 是一个字典,类似于:

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

(...或者可能通过窗口标题而不是网址)

如果是这样,则可以通过 Python 脚本使用键盘命令、control- (CTRL-)(如 control-1 或 control-2)将焦点集中到其中一个。


稍后添加的编辑试图帮助澄清:想象一个本地 wxPython 应用程序,您已经知道如何在本地运行的 wxPython 应用程序中激活同一个盒子上的给定 Chrome 实例,并且该浏览器实例打开了多个选项卡,现在您想要确保某个选项卡具有焦点,以便能够与正在显示的网页进行交互(例如,可以使用 CTRL-A CTRL-C 来获取其内容)。这个问题不是关于发出键盘命令,这是已知的,问题是如何获取打开的选项卡列表,如果可能的话,谢谢。

python browser scripting tabs
3个回答
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 自动化。


2
投票

这是不可能的。首先,您还没有注意到您开发的应用程序,但如果您使用 python 作为网站后端 - 那么它只是一种服务器端语言,并且不知道“浏览器”是什么 - 服务器输出到浏览器,仅此而已。我不相信像 JavaScript 这样的客户端语言是可能的,因为如果可能的话,这似乎是一个严重的安全和隐私问题。

编辑:如果您正在开发 Chrome 插件,那么这可能是一个完全不同的故事 - 但随后它转向 Chrome API,并且您的标记是错误的,因为“python”本身无法做到这一点。


0
投票

您可以使用 PyGetWindow 库获取所有打开的窗口的标题。

这不会为您提供浏览器中打开的选项卡列表,但它应该为您提供浏览器中当前活动选项卡的标题。

https://pypi.org/project/PyGetWindow/

© www.soinside.com 2019 - 2024. All rights reserved.