AppleScript не может получить доступ к элементам SecurityAgent - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь написать AppleScript для ввода пароля администратора в окне, но сценарий не может найти элементы процесса "SecurityAgent"

Вот диагностический скрипт, который я использовал для получения всех элементов в «SecurityAgent» и его результата, который является ничем.

Я проверил из Инспектора доступности, что окно действительно находится в процессе "SecurityAgent"

Диагностический код и результат

Если я попытаюсь получить доступ к любому элементу окна 1, результат будет:

   "Can't get window 1 of process \"SecurityAgent\". Invalid index." number -1719 from window 1 of process "SecurityAgent"

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Я столкнулся с той же проблемой, и мне кажется, что это ошибка.

Как ни странно, при проверке приложения с помощью инспектора специальных возможностей оно имеет 0 окон, но, несмотря на это, значение AXMainWindow, а также AXFocusedWindow указывает на видимое окно.

Screenshot of Accessibility Inspector

К сожалению, следующий Applescript приведет к missing value для переменной theWindow:

tell application "System Events"
    set theWindow to the value of attribute "AXMainWindow" of process "SecurityAgent"
end tell

В редких случаях окно известно, и theWindow принимает значение window 1 of process "SecurityAgent".

Хорошей новостью является то, что кажется, что есть обходной путь: как только вы нажмете на окно, AppleScript сможет его найти!

Самый простой способ - вручную щелкнуть окно.

Конечно, это тоже можно автоматизировать ... По какой-то причине следующий код не работал для меня:

tell application "System Events"
    tell process "SecurityAgent"
        activate
        set frontmost to true
        click at {200, 250}
    end tell
end tell

К счастью, сработал следующий код:

tell application "System Events"
    AST click at {200, 250}
end tell

Однако для этого необходимо установить Applescript Toolbox , который доступен только для macOS до 10.13. Начиная с macOS 10.14, сторонние библиотеки Applescript больше не поддерживаются.

0 голосов
/ 28 августа 2018

Надежный способ - дождаться начала процесса SecurityAgent

tell application "System Events"
    delay 0.5
    repeat until exists process "SecurityAgent"
        delay 0.5
    end repeat
    tell process "SecurityAgent"
        // do something
    end tell
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...