2011-09-24 112 views
10

有没有办法以编程方式获得按浏览器在浏览器中打开的选项卡列表以编程方式打开浏览器选项卡的列表

例如,假设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或继续ROL-2。


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

+0

这将真正有助于了解平台(操作系统)。我从hwnd猜测它是Windows,但添加这个细节(并适当标记)对于给你一个答案是至关重要的。 –

+0

没有指定操作系统,因为目标是开发一个跨平台的应用程序,但是,如果我们需要限制它,从Windows开始。然而,真的非常感谢你的Mac OS X的例子和Python的OLE自动化技巧,谢谢! – gseattle

回答

7

虽然不知道你的目标操作系统,你可以在Mac OS X这样做:

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

在Windows上,你会想看看OLE自动化与Python。

+0

非常好,谢谢。 – gseattle

2

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

编辑:如果您正在开发Chrome插件,可以说这可能是一个完全不同的故事 - 但随后它会朝着Chrome API发展,而您的标记是错误的,因为“python”本身无法做到这一点。

+0

所有客户端。 – gseattle

+0

主要是Python,请参阅注释添加到原始问题。我不一定认为Python无法做到这一点,因为Python可以通过ctypes,win32api和其他模块调用Windows(例如)API,非常有趣。 – gseattle

+0

我想他是在谈论一个桌面应用程序。 – rattray

相关问题