2011-03-02 8 views
5

Sto cercando di scrivere del codice di automazione (soprattutto in Ruby selenio). Ad un certo punto, un selettore di file viene aperto in Safari in modo che l'utente può selezionare un file da caricare. Il selenio non può gestirlo, ma penso che AppleScript dovrebbe essere in grado di farlo. Sono nuovo di AppleScript e non sono stato in grado di trovare qualsiasi codice standard di qualcuno automatizzare una finestra di dialogo di selezione file. Sto leggendo i documenti AppleScript, ma qualsiasi idea sarebbe più utile.Utilizzando AppleScript per scegliere un file in Safari

+0

Stai cercando di dire a livello di codice di Safari per caricare un file specifico una volta che il selettore di file è aperto, o di lasciare che Safari aprire un selettore, in primo luogo? – Asmus

+0

Il primo. Selenio clic su un collegamento che apre un selettore di file Safari, ho poi chiamo il mio AppleScript con la posizione del file, e siamo a posto. Almeno lo spero - sto per provarlo. ;) –

risposta

4

Alcuni ulteriori ricerche e ho trovato una grande risposta qui: Applescript file dialog with UI scripting

Ecco quello che ho finito per usare:

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 

fine corsa

0

Un'altra opzione Ho appena scoperto è quello di specificare la directory utilizzando la riga di comando:

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

In questo modo si c un po 'meno nello scripting dell'interfaccia utente. Esegui questo comando prima di aprire il selettore di file e ti metterà nella directory specificata. Includi tutti i file necessari in questa directory, e si può solo comando di script + A per selezionare tutti, e ritorno.