Как прокрутить верхнюю часть окна, используя applecript? - PullRequest
5 голосов
/ 11 февраля 2011

Я хочу, чтобы яблочный скрипт прокрутил окно до конца.

Я пробовал клавишу перехода на страницу вверх, клавишу home, и я пытался найти способ прокрутки, используя встроенные возможности прокрутки окна, но я до сих пор не смог даже переместить прокручиваемый файл. позиция на всех.

Ответы [ 3 ]

8 голосов
/ 11 февраля 2011

В основном используйте оператор tell app "System Events" для отправки нажатий клавиш и кодов клавиш.Теоретически вы можете использовать следующее:

keystroke page up key
keystroke page down key
keystroke home key

Но для меня это не работает.Хорошей новостью является то, что вы можете использовать вместо них коды клавиш.Я предлагаю использовать превосходное бесплатное приложение Full Key Codes , чтобы прочитать их, хотя немного сложно позволить ему читать одновременно две клавиши.

Коды клавиш для fn + клавиши со стрелками -комбины следующие:

Страница вверх: fn + клавиша вверх : key code 116

Page down: fn + клавиша "вниз" : key code 121

Home: fn + левая клавиша : key code 115

Конец: fn + правая клавиша : key code 119

Например, если у вас открыта длинная страница в Safariи вы хотите прокрутить до конца, используйте

tell application "System Events"
tell application "Safari" to activate
    — to see the animation, we wait a moment:
    delay 0.5  

    key code 119

end tell
4 голосов
/ 15 апреля 2013

В браузерах вы также можете использовать JavaScript:

tell application "Safari" to tell document 1
    do JavaScript "window.scroll(0,0)"
end tell

tell application "Google Chrome" to tell active tab of window 1
    execute javascript "window.scroll(0,0)"
end tell
1 голос
/ 15 апреля 2013

Альтернативой отправке нажатий клавиш является использование GUI-сценариев .

Предупреждение : хотя сценарии графического интерфейса пользователя более надежны , чем отправка нажатий клавиш для данной версии приложения, изменения в макете приложения в будущем версии могут сломать ваш код .

Также:

  • Сценарии GUI требуют, чтобы доступ для вспомогательных устройств был включен; включение требует прав администратора:

    • до 10,8, это можно сделать программно , для всей системы , выполнив tell application "System Events" to set UI elements enabled to true (необходимые права администратора)
    • К сожалению, в 10.9+ это больше не работает, и приложения должны быть авторизованы вручную, индивидуально - система предложит вам при первом запуске (требуются права администратора)
    • однако, в обоих сценариях tell application "System Events" to get UI elements enabled будет сообщать , включен ли доступ.
  • Определение правильных целей элемента пользовательского интерфейса может быть нетривиальным и утомительным ; помогает утилита Accessibility Inspector, которая поставляется вместе с Xcode. Имена классов, сообщаемые этой утилитой, соответствуют UI element классам, содержащимся в словаре System Events; например, AXSplitGroup соответствует splitter group.

Следующие прокрутки переднего окна Safari 6.0.3 вверх (доступ для вспомогательных устройств должен быть включен):

tell application "System Events"

    # Use Accessibility Inspector to find the desired target.
    tell front window of process "Safari"
        tell scroll bar 1 of scroll area 1 of group 1 of group 1 of last group
            set value of attribute "AXValue" to 0  # Scroll to top.
        end tell
    end tell

end tell

Обновление : В качестве напоминания о том, что этот тип сценариев работает хорошо для данной версии приложения , код должен был быть изменен для Safari 8.0.4:

tell application "System Events"

    # Use Accessibility Inspector to find the desired target.
    tell front window of process "Safari"
        tell scroll bar 1 of scroll area 1 of group 1 of group 1 of group 2
            set value of attribute "AXValue" to 0  # Scroll to top.
        end tell
    end tell

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