使用AppleScript在Safari中选择文件

时间:2011-03-02 16:05:26

标签: macos safari applescript

我正在尝试编写一些自动化代码(主要在Ruby Selenium中)。在某些时候,在Safari中打开文件选择器,以便用户可以选择要上载的文件。 Selenium无法处理这个,但我认为AppleScript应该能够。我是AppleScript的新手,并且无法找到任何自动执行文件选择器对话框的样板代码。我正在阅读AppleScript文档,但任何想法都会有所帮助。

2 个答案:

答案 0 :(得分:4)

更多搜索,我在这里找到了一个很好的答案:Applescript file dialog with UI scripting

以下是我最终使用的内容:

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

结束

答案 1 :(得分:0)

我刚发现的另一个选项是使用命令行指定目录:

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

通过这种方式,您可以在UI脚本中略微减少。在打开文件选择器之前运行此命令,它将使您进入指定的目录。在此目录中包含您需要的所有文件,您只需编写命令+ a以将其全部选中,然后返回。