|
|||||||
![]() |
|
|
Thread Tools | Search this Thread | Display Modes |
|
|
#1 |
|
AppleScript To Click One Button Only If Another Button Is Unavailable
I'm fairly new to AppleScript so I'll try and explain this as best as I can. I've tried searching (web and MR forums) but haven't been able to come up with much... I'm not entirely sure I know how to ask the question so that makes it harder to find what I'm looking for.
I'm writing an AppleScript to use for running video files through a tagging program (Subler). The issue that I have run into is that when I get to the point where the program searches for results, not all video files return a result. For the files that do not return a result, most of the code will be useless (as it walks through subsequent screens that only matter if search results were found) and when it gets to the end - the last few codes triggering the program to save, close the window and quit the program - will not work because the Search dialogue/pop-up window is still displayed. My work-around is to add a line that triggers the Esc button but I would prefer to do it properly/learn about if/else and UI Elements. I started using UIElementInspector to learn more about writing AppleScript to control specific UI elements as opposed to using a keystroke (like 36 to just hit enter when I know that the button I want is always the one highlighted). Once I get to the point where the Search dialogue is opened I have a delay of 65 seconds (usually only takes 20-30 to search but I left extra time). There are two buttons that can then be pressed: "Add" and "Cancel". I want to enter an "if" piece so that if the "Add" button is unavailable (using UIElementInspector I have assumed the relevant value is AXEnabled which is 0 if "Add" is unavailable and 1 if "Add" is available) the Script will click the "Cancel" button and then close the window and quit the program (that last part I can do). Then the "else" part would be if the "Add" button was available, in which case I would then just use the rest of the code that I have that already works. I have attached the code below with some comments. Please note that I do plan on removing all of the code to simply hit 'return' with code that will instruct the button to click but I have only recently learned that. I'm hung up on this if/else piece and don't even know if it is possible. Please let me know if any other information might help. Code:
tell application "System Events"
tell process "Subler"
delay 5
keystroke "m" using {shift down, command down} <-- opens search box
delay 65
tell sheet 1 of window 1 <-- this is where I would like the if/else piece
tell button "Add"
click
end tell
end tell
delay 5
key code 124
delay 5
key code 36
delay 65
key code 53 <-- this is my temporary solution... hitting escape to 'cancel'
delay 5
keystroke "s" using {command down}
delay 15
keystroke "w" using {command down}
delay 5
keystroke "q" using {command down}
end tell
end tell
__________________
shambo, Changing the definition of "future proof" since April 2009. Last edited by JonHimself; Jun 29, 2012 at 12:50 PM. |
|
|
|
0
|
|
|
#2 |
|
You can just get the names of all of the buttons of the sheet and look to see if the desired button is in the list. In the following example, I use the full button paths so that the add part of the script can be contained in the if statement (and not in the sheet tell statement):
Code:
tell application "System Events" to tell process "Subler"
delay 5
keystroke "m" using {shift down, command down} -- opens search box
delay 65
tell sheet 1 of window 1 to set theButtons to name of buttons -- get all of the button names
if "Add" is not in theButtons then
click button "Cancel" of sheet 1 of window 1 of application process "Subler"
else
click button "Add" of sheet 1 of window 1 of application process "Subler"
-- the rest of the add script
end if
end tell
__________________
MacBook Pro / OS X Mountain Lion (10.8.3) / Xcode 4.6 / [various (much) older stuff keeping dust off the shelves] |
|
|
|
0
|
|
|
#3 |
|
Great, thanks! I'm going to give this a shot (hopefully) tonight.
__________________
shambo, Changing the definition of "future proof" since April 2009. |
|
|
|
0
|
![]() |
|
«
Previous Thread
|
Next Thread
»
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
All times are GMT -5. The time now is 10:15 AM.






Linear Mode
