2011-09-08 9 views
9

Tôi đang cố gắng viết một AppleScript sẽ xóa bộ nhớ cache của Twitter cho Mac và sau đó khởi động lại ứng dụng. Vấn đề tôi gặp phải là hộp thoại xác nhận không có tên (thanh tiêu đề trống) vì vậy tôi bị mất như cách tôi nhắm mục tiêu nút mà không có ngữ cảnh. Dưới đây là những gì tôi có cho đến nay:Sử dụng AppleScript làm cách nào để tôi nhấp vào nút trong hộp thoại trong cửa sổ không có tên/tiê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

Bạn không cần phải xác định tiêu đề của cửa sổ (mặc dù nó là tốt hơn nếu bạn làm); bạn chỉ có thể thực hiện 'nút bấm" Empty Cache "của cửa sổ 1' – fireshadow52

+1

Bạn thậm chí có thể làm' ... của cửa sổ phía trước' nếu bạn muốn. – fireshadow52

Trả lời

7

Có rất nhiều cách để đề cập đến đối tượng trong hệ thống phân cấp đối tượng: tên chỉ có một cách (xem AppleScript Language Guide: Reference Forms Kịch bản của bạn đã sử dụng một trong những cách khác:.. Index

tell menu bar 1 

Đó là đề cập đến thanh menu bởi chỉ số của nó:. (không giống như trong nhiều ngôn ngữ lập trình, các mục trong một danh sách trong AppleScript được lập chỉ mục bắt đầu từ 1 chứ không phải 0) các kịch bản dưới đây sẽ thực hiện những gì bạn muốn:

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 

Bạn có thể nhận xét ra các dòng delay 1; Tôi đã thêm những thứ đó để làm chậm quy trình để bạn có thể dễ dàng nhìn thấy những gì đang diễn ra.

Khi cố gắng tìm hiểu cách "truy cập" đối tượng trong ứng dụng thông qua AppleScript, tôi thường thấy hữu ích khi sử dụng AppleScript Editor để tạo các tập lệnh truy vấn nhỏ để cố gắng khám phá thêm thông tin về ứng dụng. Ví dụ, trong Twitter, tôi chọn Twitter> Empty Cache để mở cửa sổ Empty Cache. Sau đó tôi chạy kịch bản sau đây:

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 

Kịch bản này trả lại kết quả sau:

{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}