【问题标题】:List of open browser tabs programmatically以编程方式打开的浏览器选项卡列表
【发布时间】:2011-11-24 04:02:31
【问题描述】:

有没有办法通过索引以编程方式获取浏览器中打开的标签页列表

例如,假设 Google Chrome 打开时有两个标签页。
在程序中,类似这样的一行:

tabs_list = list_tabs(hwnd)

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

[
0 : 'http://stackoverflow.com/',
1 : 'http://www.coolstuffff.com/'
]

(...或者可能是窗口的标题而不是 url)

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


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

【问题讨论】:

  • 了解平台(操作系统)真的很有帮助。我从 hwnd 猜测它是 Windows,但添加这个细节(并适当地标记)对于给你一个答案是必不可少的。
  • 没有指定操作系统,因为目标是开发一个跨平台的应用程序,但是如果我们需要限制它,从Windows开始。但是,非常感谢您在 Mac OS X 上的示例以及使用 Python 进行 OLE 自动化的提示,谢谢!

标签: python browser scripting tabs


【解决方案1】:

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

编辑:如果你正在开发一个 Chrome 插件,可以说它可能是一个完全不同的故事 - 但它会转向 Chrome API,你的标签是错误的,因为“python”本身不能这样做。

【讨论】:

  • 主要是 Python,请参阅添加到原始问题的注释。我不一定认为 Python 不能做到这一点,因为 Python 可以通过 ctypes、win32api 和其他模块调用 Windows(例如)API,非常有趣。
  • 我认为他在谈论桌面应用程序。
【解决方案2】:

虽然不确定您的目标操作系统,但您可以在 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 自动化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    相关资源
    最近更新 更多