如何编写AutoHotKey的脚本

发表于:2008-5-28 14:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Kiki    来源:Kiki的专栏

       上篇文章介绍了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来关闭当前活动的窗口。类似还有很多的这样的语句,就和以前写代码一样,唯一的就是没发现可以调用其他的脚本,只能在当前脚本内有效。不过自己本来就不是正道使用,呵呵。

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

更多软件测试工具的文章:http://www.51testing.com/?action_category_catid_99.html

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号