2011-09-24 106 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

相關問題