在Chrome中设置活动标签并将其置于最前面

3 投票
1 回答
2261 浏览
提问于 2025-04-18 17:19

我想用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 个回答

2

你可以使用 win.active_tab_index.set(number) 来改变当前活动的标签页。这样做不需要系统事件。不过,tab 对象本身并没有保存它自己索引的方式,所以需要把它改成这样(编辑:重写以避免一个错误)

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 苹果脚本字典

(但请注意,appscript 并没有在维护

撰写回答