So ermitteln Sie den Namen von UI-Elementen mit dem Accessibility Inspector (oder einem anderen Tool)

Ich versuche, über Applescript mit einem Druckdialog zu interagieren.

Was ich emulieren möchte, ist der Benutzer, der einen Wert in einem bestimmten Dropdown festlegt.

Sag ich habe:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

Woher soll ich den Namen XXX kennen? Wie würde ich beispielsweise zwischen den Dropdown-Menüs „Drucker“ und „Voreinstellungen“ unterscheiden?

Ich habe den Accessibility Inspector geöffnet, aber anhand der dort angezeigten Informationen kann ich keinen Verweis auf den Namen oder eine andere eindeutige Kennung für das angegebene Dropdown-Menü erkennen.

Ich habe viele Leute gesehen, die Zahlen verwenden, um auf die verschiedenen Dropdown-Listen zu verweisen, aber ich bin mir nicht sicher, ob dies eine gute Praxis ist. Was passiert, wenn Apple irgendwann beschließt, die Reihenfolge von zwei Dropdowns zu vertauschen?

Jede Hilfe wäre willkommen.

AKTUALISIEREN :

Wenn ich 10.6.8 und den Inspektor wie unten vorgeschlagen verwende, erhalte ich Folgendes:

Geben Sie hier die Bildbeschreibung ein

Ich fand den UI elementsBefehl von hier auch hilfreich: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
Hier ist ein Link zu einer anderen Seite in Ask Different , die mit der aktuellen Seite verknüpft ist, namens: AppleScript – Wie kann ich die Namen, Attribute, Eigenschaften und Klassen von UI-Elementen programmgesteuert abrufen, ohne über den Accessibility Inspector zu „raten“? (Diese Frage hier war der Grund, warum ich ein paar grundlegende Fakten zum "How-to" lernen wollte ...)

Antworten (4)

AKTUALISIEREN. Dies funktioniert in 10.7.x, aber 10.6 hat weniger Elementinformationen.

Die Schaltflächen (Dropdowns) im Druckblatt haben eine Beschreibung, um die Funktion zu beschreiben.

Im Zugänglichkeitsinspektor ; Sie sehen dies, wenn Sie mit der Maus über das Element (Schaltfläche) fahren. Sie können die Ansicht des Eingabehilfen-Inspektors mit cmd+F7 sperren.

Die Beschreibung wird als AXDescription aufgeführt

Geben Sie hier die Bildbeschreibung ein

In den Fällen für die Drucker ist es Drucker für Voreinstellungen ist es Voreinstellungen

Wenn Sie die AXDescription kennen , können Sie die Zahlen vermeiden, indem Sie so etwas verwenden. Aber das ist nicht der einzige Weg. Nur ein Beispiel.

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

Damit das obige in diesem Beispiel funktioniert, muss das Druckblatt zusammen mit „Details anzeigen“ sichtbar sein.

Die Schaltfläche/Dropdown hat ein Menü. Sie können es also auswählen oder anklicken, indem Sie auf die Menüpunkte des Menüs der Schaltfläche verweisen.

Entweder nach Nummer oder mit seinem Titel/AXTitle.

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

Sie können sich wiederholenden Code verkürzen, indem Sie eine Variable für die Schaltfläche verwenden und diese aufrufen. Wenn Sie es wie in meinem Beispiel unten machen;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell

Verwenden Sie eines der in diesem Mac OS X-Hinweis verlinkten Skripts, um die entsprechende Form der Anrede zu finden: Finding Control and Menu Items for use in AppleScript User Interface Scripting

IIRC müssen Sie auf die Schaltfläche des Popup-Menüs klicken (cmd befindet sich in Systemereignisse), bevor Sie ein Menüelement aus dem Menü auswählen können.

Für diejenigen, die sich fragen, scheint es, dass ein Ort, an dem der Accessibility Inspector in 10.7 zu finden ist, folgender ist:

/Applications/Xcode.app/Contents/Applications

Ich habe kürzlich meinen Workflow für UI-Scripting in AppleScript aufgeschrieben .

Kurz gesagt, die Schlüsselkomponente, die die Dinge für mich viel, viel einfacher machte, war zu lernen, dass der UI ElementsBefehl in AppleScript eine Liste der Begriffe zurückgibt, die der AppleScript-Editor sehen möchte, um die UI-Elemente aufzurufen. Verbinden Sie dies mit den Begriffen aus Accessibility Inspector (die oft etwas anders sind), um ein funktionierendes Skript zu erstellen.