开发者

Applescript automation flipping checkbox not always working

I have the following applescript that is acting strangely. If the file sharing checkbox is unchecked it will check it everytime. If the file sharing checkbox is already checked it will sometimes uncheck it. then when it comes to the if statement that is to determine if the current state of the file sharing checkbox(this is to take place after the check开发者_高级运维ing action) it never reads it as checked.

here is the thought proccess:

  1. open system prefs (works)
  2. show sharing pane (works)
  3. click the file sharing check box, row 3. (sort of works. checks if unchecked. does not uncheck)
  4. get current state of file sharing box, generate appropriate message(does not work)
  5. quit system prefs(works)
  6. Display message about what action was taken(works)

Apple Script

tell application "System Preferences"
activate
reveal (pane id "com.apple.preferences.sharing")
end tell
tell application "System Events"
    tell process "System Preferences"
        try
            click checkbox of row 3 of table 1 of scroll area of group 1 of window "Sharing"
            delay 2
            if checkbox of row 3 of table 1 of scroll area of group 1 of window "Sharing" is equal to 1 then
                set response to "File Sharing turned on"
            else
                set response to "File Sharing turned off"
            end if
            tell application "System Preferences" to quit
            activate (display dialog "Flipped")
        on error
            activate
            display dialog "something went wrong in automation but you are in the right menu..."
            return false
        end try
    end tell
end tell


Most of the time, the problem is that the window is not yet fully shown, so you should ask the UI element whether it is already available:

== I´ve edited the script below to reflect changes based on the comments.

tell application "System Preferences"
activate
reveal (pane id "com.apple.preferences.sharing")
end tell

tell application "System Events" to tell table 1 of scroll area of group 1 of window 1 of process "System Preferences"

    tell (1st row whose value of static text 1 is "File Sharing")
    set sharingStatus to value of checkbox 1 as boolean

    if sharingStatus is true then
        click checkbox 1
        my notify("File Sharing is now turned off")
    else
        click checkbox 1
        my notify("File Sharing is now turned on")

    end if
end tell

end tell

on notify(notification)
display dialog notification
end notify
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜