如何编写AutoHotKey的脚本

        上篇文章介绍了AutoHotKey的基本功能和大致模块,这次用一个简单的例子来说说AutoHotKey的脚本编写。和流行的自动化测试工具一样,可以通过录制在编写脚本,也可以直接手工写脚本。但是对于GUI的应用程序来说,基本上都需要录制操作,生成针对记录游历过的对象或坐标的脚本。AutoHotKey功能相对简单,基本上只记录坐标,少数对于Window的操作是用对象表示的,相当于流行自动化测试工具中的低级录制。

          下面就是我用AutoHotKey中的AutoScriptWriter (recorder)录制打开桌面坐下方“Quick Launch”栏中的IE浏览器,然后在地址栏中直接输入www.google.com,然后回车,在google的搜索中输入test,在回车的一个过程。

---------

WinWait, ,
IfWinNotActive, , , WinActivate, ,
WinWaitActive, ,
MouseClick, left,  125,  22
Sleep, 100
WinWait, Blank Page - Windows Internet Explorer,
IfWinNotActive, Blank Page - Windows Internet Explorer, , WinActivate, Blank Page - Windows Internet Explorer,
WinWaitActive, Blank Page - Windows Internet Explorer,
Send, www.google.com{ENTER}
WinWait, Google - Windows Internet Explorer,
IfWinNotActive, Google - Windows Internet Explorer, , WinActivate, Google - Windows Internet Explorer,
WinWaitActive, Google - Windows Internet Explorer,
Send, test{ENTER}
WinWait, test - Google Search - Windows Internet Explorer,
IfWinNotActive, test - Google Search - Windows Internet Explorer, , WinActivate, test - Google Search - Windows Internet Explorer,
WinWaitActive, test - Google Search - Windows Internet Explorer,
MouseClick, left,  1016,  13
Sleep, 100

--------------

         大家可以看到输入用Send, <字符>表示,点击为MouseClick, left,  <x>,  <y>。至于很多的IfWinNotActive类似于测试工具中的同步语句。因为坐标经常会变,所以如果能用按键的尽量用按键,避免坐标。象上面的Enter其实是可以用鼠标点击“Google search”按钮来实现的,但保险起见用Enter键更好。

        AutoHotKey也提供比较好的脚本语言,还是和vbscript比较相似。很好学习,可以打开AutoHotkey Help File来查找。经过简单的修改后,脚本如下:

--------------

Run %A_ProgramFiles%/Internet Explorer/iexplore.exe                     ; start IE browser
Sleep 5000                                                                                                   ; wait launch IE browser
Send, www.google.com{ENTER}                                                             ; input google's website in address bar
Sleep 5000                                                                                                    ; wait open google's home page 
Send, test{ENTER}                                                                                      ; input keyword in search field
Sleep 5000                                                                                                    ; wait search result
MouseClick, left,  1016,  13                                                                        ; click x button to close IE window

--------------

        在上面的脚本我用Sleep来同步操作,其实还有很多别的方法,例如WaitObject语句就是通过等待某个区域或点的颜色为期望的颜色时执行下一步操作,还有类似等待某个图片的。由于不提供针对对象的,其他的方式不是太灵活而且太多地方需要使用,也就没有采用。对于一些比较重要的地方,可以使用如下方法

Loop, 5
{
IfWinExist, Save As                                                    ; check whether Save As dialogbox exists
break
else
sleep %ShortSleepTime%
}

        关闭窗口也可以用WinClose, A来关闭当前活动的窗口。类似还有很多的这样的语句,就和以前写代码一样,唯一的就是没发现可以调用其他的脚本,只能在当前脚本内有效。不过自己本来就不是正道使用,呵呵。

        先说到这,有兴趣的朋友可以一起探讨。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值