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:
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
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 Elements
Befehl 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.
Phs
UI elements
Befehl von hier auch hilfreich: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescriptClemsam lang