maxfowler
maxfowler

Reputation: 1318

How to record mouse clicks on mac to be replayed by an apple script?

I am writing a script to automate repeatedly registering new users for a website (not boosting metrics, not what you think!). I can boil down the process of registering to a series of mouse clicks and typing. I know there are some macro recorders that will let me record how I use the GUI and repeat it, but I need to type something a little different every time - however the mouse clicks are always the same.

Imagining script to look kindof like:

username = "something"  
for i in range(0,100):  
     playback recorded series of mouse clicks A  
     type username + str(i)  
     type some other stuff  
     playback recorded series of mouse clicks B  

But I can't find a good tool to record a series of mouse clicks so that I can play them back from either an applescript or a python script.

I found a useful script (http://www.bluem.net/en/mac/cliclick/) I can call that takes in 2 coordinates and clicks. So even if I could find a tool to record the coordinates of mouseclicks that would work!

Upvotes: 2

Views: 3933

Answers (4)

chop
chop

Reputation: 471

How about Carsten Blum's Clicclick?

His link

It is a shell app which will emulate mouse clicks at arbitrary screen coordinates. This will work with applescript.

Upvotes: 1

regulus6633
regulus6633

Reputation: 19030

If you want to get the screen coordinates of where you want to perform mouse clicks, you can use a free tool I made called MouseTools found here. I made it for just this purpose. You'll want to do something like I show in the example #1 applescript near the bottom of the page. Just move your mouse to a position on the screen and run the applescript to get the coordinates. Note: you'll want to move your mouse to a location and press command-r (while the applescript is frontmost) to run the script in AppleScript Editor.

In addition, I found that clicking at screen coordinates, as Lauri Ranta showed in her applescript using System Events, often does not reliably work. System Events is good at clicking in the Finder however it often has trouble clicking in the window of an application like Safari. If you find that problem too then you can also use the MouseTools to perform the mouse clicks. Again, this is why I created the program and there are examples of how to do this on the web page.

I hope it helps. Good luck.

Upvotes: 1

Lri
Lri

Reputation: 27613

You can also run JavaScripts in browsers with something like tell application "Safari" to tell document 1 to do JavaScript or tell application "Google Chrome" to tell tab 1 of window 1 to execute javascript.

tell application "Safari" to tell document 1
    do JavaScript "document.querySelectorAll('.mainnavs ul li:nth-child(2) a')[0].click()"
    delay 1
    repeat until do JavaScript "document.readyState" is "complete"
        delay 0.1
    end repeat
    do JavaScript "document.getElementById('tagfilter').value = 'aa'"
end tell

System Events has commands for simulating clicks and keystrokes:

delay 1
tell application "System Events" to tell process "Safari"
    click at {76, 117}
    repeat with i from 1 to 3
        keystroke "aa" & i & return
    end repeat
    keystroke "a" using command down
end tell

You can see the positions of UI elements from Accessibility Inspector.app. It is part of Xcode, but it can also be downloaded from developer.apple.com/downloads.

Upvotes: 2

Ian Mariano
Ian Mariano

Reputation: 529

Hopefully you are doing test automation!

Have you looked into using something like Selenium WebDriver instead?

Upvotes: 0

Related Questions