2011-09-24 18 views
10

Esiste un modo per ottenere a livello di programmazione un elenco di schede aperte in un browser in un indice?Elenco delle schede del browser aperte a livello di codice

Ad esempio, supponiamo che Google Chrome sia aperto con due schede.
Nel programma, una linea qualcosa come:

tabs_list = list_tabs(hwnd) 

... dove hwnd è l'handle della finestra per l'istanza Chrome generale e tabs_list è un qualcosa di simile dizionario:

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

(... o forse per titolo della finestra invece dell'URL)

In tal caso, portare lo stato attivo su uno di essi può essere possibile dallo script Python con comandi da tastiera, controllo- (CTRL-) come control-1 o cont rol-2.


Una modifica aggiunto in seguito per cercare di aiutare a chiarire: Immagine un'applicazione locale di wxPython, in cui sai già come attivare una determinata istanza di Chrome su quella stessa macchina all'interno del tuo wxPython applicazione in esecuzione a livello locale, e che l'istanza del browser ha più schede aperte e ora si vuole assicurare che una determinata scheda sia focalizzata, per poter interagire con quella pagina Web che viene visualizzata (magari usando CTRL-A CTRL-C per esempio per raccogliere il suo contenuto). Questa domanda non riguarda l'emissione di comandi da tastiera, che è già noto, la domanda è come ottenere un elenco di schede aperte, se possibile, grazie.

+0

Sarà davvero utile conoscere la piattaforma (os). Sto indovinando da hwnd è Windows ma aggiungere questo dettaglio (e taggare appropriatamente) sarebbe essenziale per darti una risposta. –

+0

Non ha specificato il sistema operativo perché l'obiettivo è sviluppare un'applicazione multipiattaforma, tuttavia, se è necessario limitarlo, a partire da Windows. Tuttavia, apprezzo molto il tuo esempio per Mac OS X e il suggerimento per OLE Automation con Python, grazie! – gseattle

risposta

7

Pur non essendo sicuri del vostro sistema operativo di destinazione, è possibile farlo su Mac OS X:

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

In Windows, si vuole guardare in OLE Automation con Python.

+0

Eccellente, grazie. – gseattle

2

Non è possibile. Per prima cosa non hai notato quale app sviluppi ma se usi python per un back-end di un sito Web - allora è solo un linguaggio lato server e non sa cos'è un "browser" - il server restituisce al browser e questo è tutto. E non credo che sia possibile con il linguaggio lato client come javascript in quanto sembra essere un serio problema di sicurezza e privacy se fosse possibile.

Modifica: se si sta sviluppando un plug-in Chrome, si può dire che potrebbe essere una storia completamente diversa, ma poi va verso l'API di Chrome e il tagging è sbagliato, in quanto "python" non può farlo.

+0

Tutto sul lato client. – gseattle

+0

Principalmente Python, vedere la nota aggiunta alla domanda originale. Non penso necessariamente che Python non possa farlo, perché Python può chiamare le API di Windows (per esempio) tramite ctypes, win32api e altri moduli, lots-o-fun. – gseattle

+0

Penso che stesse parlando di un'applicazione desktop. – rattray

Problemi correlati