Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

I'm trying to interact with a print dialog via Applescript.

What I want to emulate is the user setting a value on a specific dropdown.

Say I have:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

How should I know the name XXX? For example, how would I distinguish between the "printer" and "presets" dropdowns?

I've opened the Accessibility Inspector, but from the information displayed there, I cannot spot a reference to the name or some other unique identifier for the specified dropdown.

I've seen many people using numbers to refer to the different dropdown, but I'm not sure this is good practice. What happens if Apple decide to swap the order of two dropdowns at some point?

Any help would be appreciated.

UPDATE:

Using 10.6.8 and inspector as suggested below, I get the following:

enter image description here

share|improve this question
    
Any this of help to you ? –  markhunte Feb 16 '12 at 22:51
    
@markhunte see update –  Roberto Aloi Feb 20 '12 at 9:51
    
I see. I am on 10.7.x I will check this out at work tomorrow where I have 10.6 –  markhunte Feb 20 '12 at 18:10
1  
Hi, I tested on 1 10.6.8 Mac. There is much less info in the Apple ids Than in 10.7. I tried two programs to see what they would pull up and they both give the same results. So it looks like you are out of luck while in 10.6 in getting some sort of name instead of using the element number. –  markhunte Feb 22 '12 at 22:25
    
I found the UI elements command from here helpful as well: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript –  phs Sep 11 '13 at 5:46

4 Answers 4

up vote 5 down vote accepted

UPDATE. this will work in 10.7.x but 10.6 has les element info.

The Buttons (drop downs ) in the Print Sheet have Description to describe the function.

In Accessibility inspector; you see this when hovering the mouse over the element (button). you can lock the Accessibility inspector's view with cmd+F7.

The Description will be listed as AXDescription

enter image description here

In the cases for the Printers its is Printers for Presets it is Presets

If you know the AXDescription you can avoid the numbers using something like this. But this is not the only way. Just one example.

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

For the above to work in this example the Print Sheet must be visible along with 'Show Details'

The button/drop down has a menu. So you can select or click it by referring to the menu items of the menu of the button.

Either by number or using its title/AXTitle.

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

You can shorten repetitive code by using a variable for the button and calling that. When doing it like my example below;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell
share|improve this answer
    
@Roberto-Aloi . Just updated the answer –  markhunte Feb 15 '12 at 18:39

For those who wonder, it seems that one location where to find the Accessibility Inspector in 10.7 is:

/Applications/Xcode.app/Contents/Applications

share|improve this answer

Use one of the scripts linked in this Mac OS X hint to find the appropriate form of address: Finding Control and Menu Items for use in AppleScript User Interface Scripting

IIRC, you'll need to click (cmd is in in System Events) the popup menu button before you can select a menu item from its menu.

share|improve this answer

I recently write up my workflow for UI Scripting in AppleScript.

In short, the key component that made things much, much easier for me was learning that the UI Elements command in AppleScript returns a list of the terms that AppleScript Editor wants to see to call the UI Elements. Interface this with the terms seen from Accessibility Inspector (which are often slightly different) to build a working script.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.