Управляйте несколькими браузерами с помощью Applescript - PullRequest
0 голосов
/ 04 июля 2019

Есть ли способ одновременно управлять двумя окнами браузера Safari с помощью Applescript и переключаться между ними? Что-то вроде уникального идентификатора, чтобы быть уверенным, какие команды для какого окна сафари.

что-то вроде ...

tell application "Safari" id 1
    activate
    ....
end tell

: -)

спасибо за вашу помощь .-

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Windows в AppleScript - это объекты кода, поэтому, если вы сделаете ссылку на один из них, например:

tell application "Safari"
    set aWindow to window 1 -- sets a reference to the current front window
end tell

AppleScript запомнит это конкретное окно, даже если вы переместите его, скроете его, поместите в фоновый режимсвести к минимуму ... Пока вы не сбросите переменную или не закроете окно, вы можете быть уверены, что aWindow будет указывать на это конкретное окно.Фактически, это работает так же для вкладок.Вы можете сказать:

tell application "Safari"
    set aTab to tab 3 of window 1 -- sets a reference to the third tab of the current front window
end tell

, и даже если вы переместите эту вкладку в другое окно, AppleScript все равно должен отслеживать ее.Аналогично, если у вас есть окно, указывающее на поисковую систему Google, вы можете сказать:

tell application "Safari"
    set aWindow to window "Google" -- sets a reference to the Google window
end tell

, а затем, если вы перейдете на другую веб-страницу, переменная aWindow все равно будет указывать на то же окно.Отлично, да?

Итак, все, что вам нужно сделать, это создать пару переменных для ваших двух окон, и вы можете переключаться туда и обратно, как вам нравится:

tell application "Safari"
    -- assuming you have a 'Google' window and a 'Yahoo' window open
    set firstWindow to window "Google"
    set secondWindow to window "Yahoo"
    set URL of document of firstWindow to "https://stackoverflow.com"
    set index of secondWindow to 1
    set miniaturized of firstWindow to true
end tell

1 голос
/ 05 июля 2019

Окна идентифицируются по абсолютному идентификатору. Вы можете видеть идентификаторы с:

tell application "Safari" to set myWindow to every window

Выдает список всех открытых окон Safari, например: {идентификатор окна 4519, идентификатор окна 4426, идентификатор окна 4514}. Есть 3 открытых окна!

Однако, чтобы переключаться между 2 окнами Safari, вы должны использовать их номер: 1 - передний, 2 - позади, 3 - за 2, ... Вы можете сказать системным событиям сделать номер 2 перед номером 1. При этом старый 2 становится 1, а 1 становится 2.

tell application "System Events" to perform action "AXRaise" of window 2 of process "Safari"

если у вас только 2 окна, строка выше будет продолжать переключаться между 2 окнами Safari, каждый раз делая второе окно самым передним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...