Активировать Выбрать элемент Safari - AppleScript - PullRequest
0 голосов
/ 02 декабря 2018

Я новичок в AppleScript и пытаюсь выяснить, как активировать выбранный элемент.

Моя жалкая попытка сафари активировать целевой элемент:

My pathetic attempt to have safari activate target element

Я выбираю элемент, вкладывая его в него.Активный элемент - кнопка воспроизведения:

Active Element is Play Button.

Тем не менее, когда я пытаюсь запустить скрипт, я получаю следующую ошибку:

get the following error.

Может ли кто-нибудь сообщить мне о моей ошибке и / или показать пример обходного пути?

1 Ответ

0 голосов
/ 03 декабря 2018

Используя JavaScript в своем коде AppleScript, вы можете нажать кнопку воспроизведения / паузы на видео YouTube в Safari с помощью следующего кода в приложении Script Editor

clickYouTubePlayButton("ytp-play-button ytp-button", 0)

to clickYouTubePlayButton(theClassName, elementnum)
    if application "Safari" is running then
        try
            tell application "Safari"
                tell window 1 to set current tab to tab 1 whose URL contains "youtube"
                do JavaScript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();" in document 1
            end tell
        end try
    end if
end clickYouTubePlayButton

enter image description here


В ответ на комментарий пользователя @ user3439894 о необходимости включить Safari для разрешения событий JavaScript, чтобы вышеуказанный код работал ... Этот следующий код автоматизирует процессвключения событий JavaScript в Safari, если это необходимо ..

Протестировано с использованием последней версии macOS Mojave и последней версии Safari

global windowName, errMsg, errNum

clickYouTubePlayButton("ytp-play-button ytp-button", 0)

to clickYouTubePlayButton(theClassName, elementnum)
    if application "Safari" is running then
        try
            tell application "Safari"
                tell window 1 to set current tab to tab 1 whose URL contains "youtube"
                do JavaScript "document.getElementsByClassName('" & theClassName & "')
                [" & elementnum & "].click();" in document 1
            end tell
        on error errMsg number errNum
            if errNum is 8 then
                my enableJavascript()
            end if
        end try
    end if
end clickYouTubePlayButton

on enableJavascript()
    tell application "Safari" to activate
    tell application "System Events"
        tell application process "Safari"
            click menu bar item "Safari" of menu bar 1
            click menu item 4 of menu 1 of menu bar item "Safari" of menu bar 1
            delay 1
            set windowName to get name of window 1
            click UI element "Advanced" of toolbar 1 of window windowName
            click checkbox "Show Develop menu in menu bar" of group 1 of group 1 ¬
                of window "Advanced"
            click UI element 2 of window "Advanced"
            click menu bar item "Develop" of menu bar 1
            click menu item "Allow JavaScript from Apple Events" of menu 1 of ¬
                menu bar item "Develop" of menu bar 1
            delay 0.5
            if exists of UI element "Allow" of window 1 then
                click UI element "Allow" of window 1
            end if
        end tell
    end tell
end enableJavascript
...