自动化之UI(autoit)
Posted vvsky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化之UI(autoit)相关的知识,希望对你有一定的参考价值。
自动化
说到自动化,我真的很不喜欢UI这层去做实践。前置条件要求比较严谨,如果不满足特定的前置条件,那么成本实在太大了。
投入与产出差过大,效果打折扣。从互联网来说,UI自动化是入门门槛很低的一种实践,但是互联网能满足这种前置条件的产品感觉并不多。
其一:它需要产品是维稳的,即变动不是非常的大。
其二:对于元素会有一定的要求,比如web,那么对html的页面元素就会希望开发能规范ID或者class等;对于PC应用,也则需要有可识别的ID,包括移动APP也是。
常见使用的工具一般集合在:selenium/uiautomation/appium/monkey等,早之前还有QTP。
我最早练手是使用的QTP,后面陆陆续续也用过一些其他的,比如web自动化还做了浏览器js插件去适配测试。
后面,有接收到任务要求做PC应用程序的自动化,当时认为QTP太大了,而且需要破解等比较麻烦,就改用了AutoIT工具去实现。
AutoIT这款工具,大部分是被用来做游戏外挂的,所以想做外挂的人不要局限于按键精灵。
AutoIT范例
首先介绍下AutoIt常用的两个菜单项,如下图:
1.帮助文档
2.autoit window info分为32位系统识别和64位系统识别,识别程序应用的元素。类似于selenium抓取的html元素,又类似于uiautomationview这个。
识别元素界面打开如下:请记住红色圈圈内图标。抓取元素就是靠点击该按钮不放手拖动到你需要的产品上去识别。粉红部分就是抓取到的信息
案例脚本如下:
1 #cs 2 对计算器进行自动化测试 3 自动计算4+5=9 4 结束后关闭计算器窗口 5 #ce 6 7 Calc() 8 9 Func Calc() 10 Local $time=2000; 11 ;运行计算器 12 Run("calc.exe"); 13 ; 等待1s,计算器窗口出现 14 Local $hWnd = WinWait("[CLASS:CalcFrame]", "", 1) 15 ;激活该窗口,即将光标定位道该窗口 16 WinActivate("[CLASS:CalcFrame]"); 17 ;点击4 18 ControlClick($hWnd, "", "Button4"); 19 ; 等待2s观察效果. 20 Sleep($time); 21 ;点击+ 22 ControlClick($hWnd, "", "Button23"); 23 Sleep($time); 24 ;点击5 25 ControlClick($hWnd, "", "Button10"); 26 Sleep($time); 27 ;点击= 28 ControlClick($hWnd, "", "Button28"); 29 Sleep($time); 30 WinClose("[CLASS:CalcFrame]"); 31 32 EndFunc ;==>Calc
AutoIt支持其他语言
AutoIt支持VBScript脚本,范例如下:
‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ ‘ ‘ Example WSH Script (VBScript) ‘ ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ ‘ Require Variants to be declared before used Option Explicit ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ ‘ Declare Variables & Objects ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ Dim oShell Dim oAutoIt ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ ‘ Initialise Variables & Objects ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ Set oShell = WScript.CreateObject("WScript.Shell") Set oAutoIt = WScript.CreateObject("AutoItX3.Control") ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ ‘ Start of Script ‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘ WScript.Echo "This script will run some test calculations" oShell.Run "calc.exe", 1, FALSE ‘ Wait for the calc window to become active oAutoIt.WinWaitActive "Calculator", "" ‘ Send some keystokes to calc oAutoIt.Send "2*2=" oAutoIt.Sleep 500 oAutoIt.Send "4*4=" oAutoIt.Sleep 500 oAutoIt.Send "8*8=" oAutoIt.Sleep 500 oAutoIt.WinClose "Calc", "" oAutoIt.WinWaitClose "Calc", "" WScript.Quit
AutoIt支持C++,同时也支持java,VB, Delphi, C等 。
均可以在以上语言开发的同时嵌入Autoit。
备注
以上脚本适用于win32标准控件框架,当你的框架并非win32标准时,可以使用autoit走相对坐标去实现或者使用sikuli去实现,总之,自动化是应产品而选择方案的。
详细脚本就不解释了,可以参考手册,手册内有非常多的案例。
做自动化或者说测试,个人感觉需要培养一种思路,而不是说会去用种工具就可以了。
同时,希望有志于往测试发展的人,还是希望至少能熟悉一种语言,这真的是优势,熟悉语言也可以为工作提供不少的帮助。
文章写的这些仅仅只是入门的一种,其实需要培养的思路是有助于去做一些框架的架设等事情,其实可以去熟悉下微软的SDTE。
以上是关于自动化之UI(autoit)的主要内容,如果未能解决你的问题,请参考以下文章
UI自动化测试AutoIT工具使用和robot对象模拟键盘按键操作