2 votes

AppleScript - Scripting de l'interface graphique et définition des valeurs des cases à cocher, des boutons radio et des champs.

Je travaille sur un script AppleScript d'interface graphique qui, pour le document FileMaker Pro Advanced ouvert, va dans le menu Fichier et sélectionne la boîte de dialogue Options de fichier, puis définit certaines valeurs de cases à cocher/boutons radio et de champs.

La boîte de dialogue ressemble à ceci :

enter image description here

Je voudrais que mon script fasse ce qui suit :

  1. cochez la case "Se connecter en utilisant :" si elle n'est pas déjà sélectionnée
  2. sélectionnez le bouton radio "Nom du compte et mot de passe" s'il n'est pas déjà sélectionné
  3. Saisissez une valeur dans le champ "Compte :".
  4. Entrez une valeur dans le champ "Mot de passe :".
  5. Cliquez sur le bouton OK

J'ai réussi à ouvrir la boîte de dialogue mais je n'arrive pas à passer la case à cocher. C'est la première fois que j'utilise un script GUI. J'utilise OS X Yosemite 10.10.3.

Voici mon script :

-- check that GUI Scripting is available

GUIScripting_status()

-- bring FileMaker Pro Advanced to the front

tell application "FileMaker Pro Advanced"
    activate
end tell

setfmFileOptions()

on click_button(app_name, button_name)
    try
        tell application app_name
            activate
        end tell
        tell application "System Events"
            tell process app_name
                click button button_name of front window
            end tell
        end tell
        return true
    on error error_message
    end try
end click_button

on do_menu(app_name, menu_name, menu_item)
    try
        -- bring the target application to the front
        tell application app_name
            activate
        end tell
        tell application "System Events"
            tell process app_name
                tell menu bar 1
                    tell menu bar item menu_name
                        tell menu menu_name
                            click menu item menu_item
                        end tell
                    end tell
                end tell
            end tell
        end tell
        return true
    on error error_message
        return false
    end try
end do_menu

on setfmFileOptions()

    -- choose the Developer Utilities menu item from the Tools menu of FileMaker Pro Advanced

    do_menu("FileMaker Pro Advanced", "File", "File Options...")

    -- click the "Log in using" checkbox:

    if (exists checkbox "Log in using:" of window 1) is true then
 click checkbox "Log in using:" of window 1
 end if

end setfmFileOptions

on GUIScripting_status()
    -- check to see if assistive devices is enabled
    tell application "System Events"
        set UI_enabled to UI elements enabled
    end tell
    if UI_enabled is false then
        tell application "System Preferences"
            activate
            set current pane to pane id "com.apple.preference.universalaccess"
            display dialog "This script utilizes the built-in Graphic User Interface Scripting architecture of Mac OS x which is currently disabled." & return & return & "You can activate GUI Scripting by selecting the checkbox \"Enable access for assistive devices\" in the Universal Access preference pane." with icon 1 buttons {"Cancel"} default button 1
        end tell
    end if
end GUIScripting_status

Il ne compile pas et renvoie cette erreur à la ligne " if (exists checkbox "Log in using :" of window 1) is true then" :

enter image description here

1voto

William T Froggard Points 5321

Essayez ce petit changement de syntaxe :

on setfmFileOptions(app_name)

    -- choose the Developer Utilities menu item from the Tools menu of FileMaker Pro Advanced

    do_menu(app_name, "File", "File Options...")

    -- click the "Log in using" checkbox:
    tell application "System Events"
        tell process app_name
            repeat until (exists checkbox "Log in using:" of tab group 1 of window 1)
                delay 1
            end repeat
            click checkbox "Log in using:" of tab group 1 of window 1
        end tell
    end tell
end setfmFileOptions

Vous ne pouvez pas utiliser la fenêtre 1 sans dire dans quel processus elle se trouve. Vous devez maintenant spécifier app_name comme paramètre.

Donc, comme ça :

setfmFileOptions("FileMaker Pro Advanced")

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X