2011-09-08 9 views
9

Próbuję napisać AppleScript, który opróżni pamięć podręczną Twittera dla Maca, a następnie ponownie uruchomi aplikację. Problem polega na tym, że okno dialogowe z potwierdzeniem nie ma nazwy (pasek tytułu jest pusty), więc nie wiem, w jaki sposób celuję w przycisk bez kontekstu. Oto co mam do tej pory:Korzystanie z AppleScript, jak mogę kliknąć przycisk w oknie dialogowym, które nie ma nazwy/tytułu?

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 
+1

Nie musisz podać tytuł okna (chociaż lepiej jeśli nie); możesz po prostu zrobić "kliknij przycisk" Opróżnij pamięć podręczną "okna 1'' – fireshadow52

+1

Możesz nawet zrobić" ... okna przedniego ", jeśli chcesz. – fireshadow52

Odpowiedz

7

Istnieje wiele sposobów odnosi się do obiektów w hierarchii obiektów: nazwa jest tylko jeden sposób (patrz AppleScript Language Guide: Reference Forms Twój skrypt korzysta już jeden z innych sposobów:.. Index

tell menu bar 1 

To się odnosząc się do paska menu przez jego indeks. (w przeciwieństwie do wielu języków programowania, pozycje na liście w AppleScript są indeksowane począwszy od 1 zamiast 0) poniższy skrypt powinien osiągnąć to, co chcesz:

tell application "Twitter" to activate 

tell application "System Events" 
    tell application process "Twitter" 
     click menu item "Empty Cache" of menu "Twitter" of menu bar item "Twitter" of menu bar 1 
     delay 1 
     --click button "Empty Cache" of front window 
     click button "Empty Cache" of window 1 
    end tell 
end tell 

tell application "Twitter" 
    quit 
    delay 1 
    activate 
end tell 

Możesz prawdopodobnie skomentować linie delay 1; Dodałem te, aby spowolnić procedurę, aby łatwiej było zobaczyć, co się dzieje.

Kiedy próbujemy dowiedzieć się, jak "dostać się" do obiektu w aplikacji za pomocą AppleScript, często uważam, że pomocne jest użycie AppleScript Editor do tworzenia małych skryptów zapytań, aby spróbować odkryć więcej informacji o aplikacji. Na przykład w serwisie Twitter wybrałem opcję Twitter> Empty Cache, aby wyświetlić okno Empty Cache. Potem pobiegł następujący skrypt:

tell application "Twitter" 
    set theWindows to every window -- get a list of windows 
    (* turns out there's only one window listed, 
     so get the first item in the list *) 
    set theWindow to first item of theWindows 
    -- get the properties of the window 
    properties of theWindow 
end tell 

Ten skrypt zwrócony następujący wynik:

{closeable:true, zoomed:false, class:window, index:1, 
    visible:true, name:missing value, miniaturizable:true, 
id:28551, miniaturized:false, resizable:true, 
bounds:{-618, 76, -128, 756}, zoomable:true} 
Powiązane problemy