Список открытых вкладок браузера программно
есть ли способ программно получить список открытых вкладок в браузере по индексу?
например, предположим, что 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 ответов
хотя вы не уверены в своей целевой ОС, вы можете сделать это на Mac OS X:
>>> from appscript import *
>>> map(lambda x: x.title(), app('Google Chrome').windows[0].tabs())
[u'Stack Overflow', u'Google']
в Windows вы захотите изучить Ole Automation с помощью Python.
Это невозможно. Сначала вы не заметили, какое приложение вы разрабатываете, но если вы используете python для бэкэнда веб - сайта-тогда это просто серверный язык и не знает, что такое "браузер" - сервер выводит в браузер и все. И я не верю, что это возможно с клиентским языком, таким как javascript, поскольку это кажется серьезной проблемой безопасности и конфиденциальности, если это было возможно.
Edit: если вы разрабатываете плагин Chrome, скажем, это может быть совсем другое история-но тогда она идет в сторону Chrome API, и ваша пометка неверна, так как сам "python" не может этого сделать.