Tuesday, 24 April 2018

macos - How do I automate clicking a button in an application's window with AppleScript?


Let's say I want to click a button that appears somewhere within a window, using AppleScript. click button works, but you have to know which button exactly you want to press.




For example: Scanning is a bit cumbersome when you always have to wait for the scanner to finish, then switch to Image Capture.app, then click Scan again.


So, I want to automate clicking this button here …


enter image description here


Well, I thought that would be relatively easy, but in the beginning this is as far as I got:


tell application "System Events"
tell process "Image Capture"
click button "Scan" of window "Image Capture"
end tell
end tell

Of course, the button is buried deeper than that (i.e. in some Split Group).


With the Accessibility Inspector I can see where it is, but do I really have to go down the UI element tree to find the button? Is there any shortcut? If not, what am I missing in click button "Scan" of window "Image Capture"?


enter image description here


More general: Where do I find a button in the UI element hierarchy?



Answer



If the button is not available directly, you might have to guess.


What works in High Sierra is:


tell application "System Events"
tell process "Image Capture"
click button "Scan" of group 2 of splitter group 1 of window "Image Capture"
end tell
end tell

On older macOS releases, group 1 may have to be used.


Another workaround would be to activate the window and press the space bar:


tell application "Image Capture"
activate
tell application "System Events" to key code 49
end tell



You can actually try to near it down by running commands like:


UI elements of window 1
UI elements of splitter group 1 of window 1
UI elements of group 1 of splitter group 1 of window 1

or, as @Lri said in the comments:


properties of UI elements of window 1
properties of UI elements of UI elements of window 1

This will present you with a list of elements contained, and you can guess your way from there.


No comments:

Post a Comment

Where does Skype save my contact's avatars in Linux?

I'm using Skype on Linux. Where can I find images cached by skype of my contact's avatars? Answer I wanted to get those Skype avat...