Использование AppleScript для выбора файла в Safari - PullRequest
5 голосов
/ 02 марта 2011

Я пытаюсь написать некоторый код автоматизации (прежде всего в Ruby Selenium). В какой-то момент в Safari открывается средство выбора файлов, чтобы пользователь мог выбрать файл для загрузки. Selenium не может справиться с этим, но я думаю, что AppleScript должен быть в состоянии. Я новичок в AppleScript и не смог найти шаблонный код кого-то, кто автоматизирует диалог выбора файлов. Я читаю документы AppleScript, но любые идеи будут наиболее полезны.

Ответы [ 2 ]

4 голосов
/ 02 марта 2011

Еще немного поиска, и я нашел отличный ответ здесь: Диалог файла Applescript со сценариями пользовательского интерфейса

Вот что я в итоге использовал:

on run argv
tell application "Safari"
    activate

    -- Usage check
    set argc to count argv
    if argc is not greater than 0 then
        return "Usage: SafariFileChooser file_name [window_name]"
    end if

    -- The file we will choose to open
    set file_name to item 1 of argv

    -- Flip to the named window, if specified
    if argc is equal to 2 then
        set window_name to item 2 of argv
        set flip_count to index of window window_name
        repeat (flip_count - 1) times
            activate
            tell application "System Events" to keystroke "`" using command down
        end repeat
    end if

    -- Interact with the dialog using System Events (thanks mcgrailm)
    tell front window
        activate
        tell application "System Events"
            keystroke "g" using {shift down, command down}
            keystroke file_name
            delay 1
            keystroke return
            delay 1
            keystroke return
        end tell
    end tell
end tell
return 0

end run

0 голосов
/ 10 марта 2015

Другой вариант, который я только что обнаружил, - указать каталог с помощью командной строки:

    do shell script "defaults write com.apple.Safari NSNavLastRootDirectory /path/to/directory"

Таким образом, вы можете сделать немного меньше в сценариях пользовательского интерфейса.Запустите эту команду, прежде чем открыть средство выбора файлов, и он попадет в указанный каталог.Включите все файлы, которые вам нужны, в этот каталог, и вы можете просто набрать команду + a, чтобы выбрать их все, и вернуться.

...