Установите активную вкладку в Chrome и перенесите ее на передний план

Я хотел бы использовать Python и appscript, чтобы установить данную вкладку Google в качестве основной вкладки. Я могу получить вкладку таким образом:

from appscript import *
chrome = app('Google Chrome')
tab_title = 'New York Times'
win_tabs = []
for win in chrome.windows.get():
    win_tabs.append([])
    tnames = map(lambda x: x.title(), win.tabs())
    rel_t = [t for t in win.tabs() if tab_title in t.title()]
    if len(rel_t):
        rel_t = rel_t[0]
        break

Теперь я хотел бы установить эту вкладку как самое переднее окно. Есть идеи? Я подозреваю, что мне придется использовать что-то вроде

se = app('System Events')

И управлять всем оттуда, но я понятия не имею.

1 ответ

Решение

Ты можешь использовать win.active_tab_index.set(number) изменить активную вкладку. Нет необходимости в системных событиях. Но tab объект не имеет ссылки на свой собственный индекс, поэтому замените его следующим (edit: переписан, чтобы избежать ошибки)

def activate_chrome_tab(title):
    for window in chrome.windows.get():
        for index, tab in enumerate(window.tabs()):
            if title in tab.title():
                window.active_tab_index.set(index + 1)
                window.activate()
                window.index.set(1)
                return

activate_chrome_tab(tab_title)

(Если имеется несколько окон с одним и тем же именем вкладки, каждое из них будет фокусироваться по очереди - так выглядит оригинал

(Источник: словарь Chrome AppleScript) (Но приложение-заметка не поддерживается)

Другие вопросы по тегам