Список открытых вкладок браузера программно - PullRequest
10 голосов
/ 24 сентября 2011

Есть ли способ программно получить список открытых вкладок в браузере по индексу?

Например, предположим, что 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, в котором вы уже знаете, как активировать данный экземпляр Chrome в этом же окне из локально работающего приложения wxPython, и этот экземпляр браузера имеет несколько вкладок. откройте, и теперь вы хотите убедиться, что определенная вкладка имеет фокус, чтобы иметь возможность взаимодействовать с той веб-страницей, которая отображается (возможно, с помощью CTRL-A CTRL-C, например, для сбора ее содержимого). Этот вопрос не о выдаче команд клавиатуры, это уже известно, вопрос в том, как получить список открытых вкладок, если это возможно, спасибо.

Ответы [ 2 ]

7 голосов
/ 24 сентября 2011

Хотя вы не уверены в своей целевой ОС, вы можете сделать это в 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.

2 голосов
/ 24 сентября 2011

Это невозможно. Сначала вы не заметили, какое приложение вы разрабатываете, но если вы используете python для бэкэнда веб-сайта - тогда это просто язык на стороне сервера, и вы не знаете, что такое «браузер» - сервер выводит данные в браузер и все. И я не верю, что это возможно с клиентским языком, таким как javascript, поскольку это кажется серьезной проблемой безопасности и конфиденциальности, если бы это было возможно.

Редактировать: Если вы разрабатываете плагин для Chrome, допустим, что это совсем другая история - но затем он идет к API Chrome, и ваши теги неверны, поскольку сам Python не может этого сделать.

...