1

我正在编写一个脚本来自动为网站重复注册新用户(不是提高指标,不是你想的那样!)。我可以将注册过程归结为一系列鼠标点击和打字。我知道有一些宏记录器可以让我记录我如何使用 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

4 回答 4

1

如果你想获得你想要执行鼠标点击的屏幕坐标,你可以使用我在这里找到的一个名为 MouseTools 的免费工具。我就是为了这个目的而做的。您需要执行我在靠近页面底部的示例#1 applescript 中展示的操作。只需将鼠标移动到屏幕上的某个位置并运行 applescript 即可获取坐标。注意:您需要将鼠标移动到某个位置并按 command-r(此时 applescript 位于最前面)以在 AppleScript Editor 中运行脚本。

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

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

于 2013-04-25T23:31:11.057 回答
0

Carsten Blum 的 Clicclick 怎么样?

他的链接

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

于 2013-04-26T03:31:45.090 回答
0

您还可以在浏览器中运行 JavaScript,例如tell application "Safari" to tell document 1 to do JavaScripttell 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

系统事件具有模拟点击和击键的命令:

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下载。

于 2013-04-25T20:23:23.213 回答
0

希望你正在做测试自动化!

您是否考虑过使用Selenium WebDriver之类的东西?

于 2013-04-25T18:29:47.363 回答