Verwendung von AppleScript-wie kann ich auf eine Schaltfläche in einem dialog in einem Fenster, hat keinen Namen/Titel?
Ich versuche zu schreiben ein AppleScript, das wird, leeren Sie den cache des Twitter for Mac und starten Sie die app. Das problem das ich laufen in ist, dass das Bestätigungs-Dialogfeld nicht einen Namen haben (die Titelleiste ist leer), so bin ich verloren, wie ich Ziel-die Schaltfläche kein Rahmen. Hier ist, was ich habe, so weit:
tell application "Twitter"
activate
end tell
tell application "System Events"
tell process "Twitter"
tell menu bar 1
tell menu bar item "Twitter"
tell menu "Twitter"
click menu item "Empty Cache"
end tell
end tell
end tell
end tell
end tell
tell application "System Events"
click button "Empty Cache" of window "Empty Cache?"
end tell
tell application "Twitter"
quit
end tell
tell application "Twitter"
activate
end tell
- Sie nicht haben, um geben Sie den Titel des Fensters (obwohl es besser, wenn Sie tun); Sie können nur tun
click button "Empty Cache" of window 1
- Sie können sogar tun
...of front window
wenn Sie wollen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es zahlreiche Möglichkeiten zum verweisen auf Objekte, die innerhalb der Objekt-Hierarchie: name ist nur eine Art (siehe AppleScript Language Guide: Referenz Bildet. Ihr Skript bereits verwendet eine der anderen Möglichkeiten: Index.
Dass die Bezugnahme auf die Menüleiste durch seinen index: (im Gegensatz zu vielen Programmiersprachen, die Elemente in einer Liste in AppleScript sind indiziert, beginnend bei 1 statt 0). Das script unten sollte erreichen, was Sie wollen:
Kann man wohl kommentieren Sie die
delay 1
Zeilen; ich fügte diese zu einer Verlangsamung der Verfahren, so können Sie leichter sehen, was passiert.Wenn Sie versuchen, um herauszufinden, wie man "bekommen" ein Objekt in eine Anwendung mithilfe von AppleScript, finde ich es oft hilfreich, die Verwendung von AppleScript-Editor zum erstellen von kleinen query-Skripts, um zu versuchen, zu entdecken mehr Infos über die app. Zum Beispiel in Twitter, die ich wählte, Twitter - > Cache Leeren, um den Cache Leeren Fenster. Ich lief dann das folgende Skript:
Dieses Skript zurückgegeben, das folgende Ergebnis: