2011-03-02 105 views
5

我正在嘗試編寫一些自動化代碼(主要是在Ruby Selenium中)。在某些時候,在Safari中打開文件選擇器,以便用戶可以選擇要上傳的文件。硒不能處理這個問題,但我認爲AppleScript應該可以。我是AppleScript的新手,無法找到自動執行文件選擇器對話框的人的任何樣板代碼。我正在閱讀AppleScript文檔,但任何想法都會對您有所幫助。使用AppleScript在Safari中選擇文件

+0

您是否試圖以編程方式告訴Safari在文件選擇器打開後上傳特定文件,或讓Safari首先打開選擇器?前者爲 – Asmus 2011-03-02 16:27:43

+0

。 Selenium點擊一個打開Safari文件選擇器的鏈接,然後用文件位置調用我的AppleScript,而且我們很好。至少我希望如此 - 即將嘗試。 ;) – 2011-03-02 18:42:08

回答

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 

運行結束

0

我剛剛發現的另一個選項是指定的目錄使用命令行:

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

這樣你c在UI腳本中做得稍微少一些。在打開文件選擇器之前運行此命令,它會將您置於指定的目錄中。在這個目錄中包含你需要的所有文件,你可以編寫命令+ a來選擇它們,然後返回。

相關問題