如何在mac上记录鼠标点击以便用苹果脚本重放?

时间:2013-04-25 18:18:07

标签: python macos applescript ui-automation

我正在编写一个脚本来自动重复为网站注册新用户(不是提升指标,而不是你的想法!)。我可以归结为注册一系列鼠标点击和输入的过程。我知道有一些宏录像机会让我记录我如何使用GUI并重复它,但我需要每次都输入一些不同的东西 - 但鼠标点击始终是相同的。

想象脚本看起来像:

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  

但我找不到一个很好的工具来记录一系列鼠标点击,这样我就可以用AppleScript或python脚本来播放它们。

我找到了一个有用的脚本(http://www.bluem.net/en/mac/cliclick/),我可以调用它来获取2个坐标和点击。所以,即使我能找到一个工具来记录鼠标点击的坐标,它们也会起作用!

4 个答案:

答案 0 :(得分:1)

如果您想获得要执行鼠标点击的屏幕坐标,可以使用我发现的名为MouseTools here的免费工具。我是为了这个目的而做的。你会想做我在页面底部附近的示例#1 applescript中显示的内容。只需将鼠标移动到屏幕上的某个位置,然后运行applescript即可获得坐标。注意:您需要将鼠标移动到某个位置并按下命令-r(当applescript位于最前面时)以在AppleScript编辑器中运行该脚本。

此外,我发现点击屏幕坐标,正如Lauri Ranta使用系统事件在她的AppleScript中显示的那样,通常无法可靠地工作。系统事件擅长点击Finder,但是经常无法点击Safari等应用程序的窗口。如果您也发现了这个问题,那么您也可以使用MouseTools来执行鼠标点击。同样,这就是我创建程序的原因,并且有一些如何在网页上执行此操作的示例。

我希望它有所帮助。祝你好运。

答案 1 :(得分:0)

希望您正在进行测试自动化!

您是否考虑使用类似Selenium WebDriver的内容?

答案 2 :(得分:0)

您还可以使用tell application "Safari" to tell document 1 to do JavaScripttell application "Google Chrome" to tell tab 1 of window 1 to execute javascript等浏览器在浏览器中运行JavaScripts。

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具有模拟点击和击键的命令:

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

您可以从Accessibility Inspector.app中查看UI元素的位置。它是Xcode的一部分,但也可以从developer.apple.com/downloads下载。

答案 3 :(得分:0)

Carsten Blum的Clicclick怎么样?

His link

它是一个shell应用程序,可以在任意屏幕坐标处模拟鼠标点击。这将与applescript一起使用。