GUI Scripting Examples

This section describes a couple of examples of GUI scripting from my own life.

Our first example will be to toggle File Sharing on or off. This is something I need to do quite often, and System Preferences isn’t sufficiently scriptable to automate it. I have to open System Preferences, go the right pane, and press all the right buttons, every time; this, as they say, gets old real fast. But AppleScript can automate it for me, thanks to GUI scripting.

System Preferences is sufficiently scriptable to get us to the Sharing pane, so let’s consider that problem solved. To write our script, then, the first step is to open the Sharing pane manually and explore it in terms of its UI element objects.

For example, we’re initially interested in the Personal File Sharing row of the scrolling list in the Services tab. UI Element Inspector describes it this way:

<AXApplication: "System Preferences">
 <AXWindow: "Sharing">
  <AXTabGroup>
   <AXScrollArea>
    <AXTable>
     <AXRow>
      <AXTextField>

Attributes:
   AXRole:  "AXTextField"
   AXRoleDescription:  "text field"
   AXHelp:  "(null)"
   AXValue (W):  "Personal File Sharing"
   AXEnabled:  "1"
   AXFocused:  "0"
   AXParent:  "<AXRow>"
   AXWindow:  "<AXWindow: "Sharing">"
   AXPosition:  "x=228 y=341"
   AXSize:  "w=195 h=18"
   AXSelectedText:  "(null)"
   AXSelectedTextRange:  "(null)"

Actions:
   AXConfirm - AXConfirm

PreFab UI Browser displays the element hierarchy more graphically, using AppleScript terminology; Figure 22-1 shows the result.

Figure 22-1. UI Browser describes a window ...

Get AppleScript: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.