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