2011-03-02 46 views
5

Estoy tratando de escribir algún código de automatización (principalmente en Ruby Selenium). En algún momento, se abre un selector de archivos en Safari para que el usuario pueda seleccionar un archivo para cargar. Selenium no puede manejar esto, pero creo que AppleScript debería poder hacerlo. Soy nuevo en AppleScript y no he podido encontrar ningún código repetitivo de alguien que automatice un cuadro de diálogo de selección de archivos. Estoy leyendo los documentos de AppleScript, pero cualquier idea sería de gran ayuda.Uso de AppleScript para elegir un archivo en Safari

+0

¿Está intentando decirle a Safari que cargue un archivo específico una vez que el selector de archivos está abierto, o dejar que Safari abra un selector en primer lugar? – Asmus

+0

El primero. Selenium hace clic en un enlace que abre un selector de archivos Safari, luego llamo a mi AppleScript con la ubicación del archivo y estamos bien. Al menos eso espero, a punto de intentarlo. ;) –

Respuesta

4

Algunos más penetrante y me encontré con una gran respuesta aquí: Applescript file dialog with UI scripting

Esto es lo que terminé usando:

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 

funcionamiento de final

0

Otra opción acabo de descubrir es especificar el directorio usando la línea de comando:

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

De esta manera usted c Haga un poco menos en la creación de secuencias de comandos de interfaz de usuario. Ejecute este comando antes de abrir el selector de archivos y lo ubicará en el directorio especificado. Incluya todos los archivos que necesita en este directorio, y puede simplemente escribir comandos + a para seleccionarlos todos, y regresar.

Cuestiones relacionadas