2011-09-24 31 views
10

¿Hay alguna manera de obtener programáticamente una lista de pestañas abiertas en un navegador por índice?Lista de pestañas abiertas del navegador mediante programación

Por ejemplo, supongamos que Google Chrome es abierto con dos pestañas.
En el programa, una línea algo como:

tabs_list = list_tabs(hwnd) 

... donde hwnd es el identificador de la ventana para la instancia de cromo total y tabs_list es un diccionario algo como:

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

(... o tal vez por título de la ventana en lugar de url)

Si es así, entonces puede ser posible enfocar uno de ellos desde la secuencia de comandos de Python con comandos de teclado, control- (CTRL-) como control-1 o cont rol-2.


Una edición añadido más tarde para tratar de ayudar a aclarar: Imagen de una aplicación local de wxPython, en la que ya sabe cómo activar una instancia determinada de Chrome en ese mismo cuadro desde la aplicación wxPython que se ejecutan localmente, y que instancia del navegador tiene varias pestañas abiertas, y ahora que desea asegurar que una determinada pestaña tiene el foco, para poder interactuar con la página web que se está visualizando (tal vez usando CTRL-a CTRL-C, por ejemplo, para cosechar su contenido). Esta pregunta no se trata de emitir comandos de teclado, eso ya es conocido, la pregunta es cómo obtener una lista de pestañas abiertas, si es posible, gracias.

+0

Es realmente ayudará a conocer la plataforma (sistema operativo). Supongo que es Windows, pero agregar este detalle (y etiquetar adecuadamente) sería esencial para darte una respuesta. –

+0

no especificó OS porque el objetivo es desarrollar una aplicación multiplataforma, sin embargo, si hay que limitarlo, a partir de Windows. Sin embargo, realmente aprecio su ejemplo para Mac OS X y el consejo para la automatización OLE con Python, ¡gracias! – gseattle

Respuesta

7

Si bien no está seguro de su sistema operativo de destino, puede hacer esto en Mac OS X:

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

En Windows, tendrá que buscar en la automatización OLE con Python.

+0

Excelente, gracias. – gseattle

2

No es posible. En primer lugar usted no ha notado lo que la aplicación a desarrollar, pero si se utiliza Python para un sitio web de back-end - a continuación es sólo un lenguaje de servidor y no sabe lo que es un "navegador" es - las salidas de servidor al navegador y eso es todo. Y no creo que sea posible con el lenguaje del lado del cliente, como javascript, ya que parece ser un grave problema de seguridad y privacidad si fuera posible.

Editar: Si está desarrollando un complemento de Chrome, digamos que podría ser una historia completamente diferente, pero luego va hacia la API de Chrome y su etiquetado es incorrecto, ya que "python" no puede hacer eso.

+0

Todo el lado del cliente. – gseattle

+0

Principalmente Python, ver nota añadida a la pregunta original. No necesariamente creo que Python no pueda hacer eso, porque Python puede llamar a Windows (por ejemplo) API a través de ctypes, win32api y otros módulos, lots-o-fun. – gseattle

+0

Creo que estaba hablando de una aplicación de escritorio. – rattray

Cuestiones relacionadas