一.自動(dòng)化
說到自動(dòng)化,我真的很不喜歡UI這層去做實(shí)踐。前置條件要求比較嚴(yán)謹(jǐn),如果不滿足特定的前置條件,那么成本實(shí)在太大了。
投入與產(chǎn)出差過大,效果打折扣。從互聯(lián)網(wǎng)來說,UI自動(dòng)化是入門門檻很低的一種實(shí)踐,但是互聯(lián)網(wǎng)能滿足這種前置條件的產(chǎn)品感覺并不多。
其一:它需要產(chǎn)品是維穩(wěn)的,即變動(dòng)不是非常的大。
其二:對(duì)于元素會(huì)有一定的要求,比如web,那么對(duì)html的頁(yè)面元素就會(huì)希望開發(fā)能規(guī)范ID或者class等;對(duì)于PC應(yīng)用,也則需要有可識(shí)別的ID,包括移動(dòng)APP也是。
常見使用的工具一般集合在:selenium/uiautomation/appium/monkey等,早之前還有QTP。
我早練手是使用的QTP,后面陸陸續(xù)續(xù)也用過一些其他的,比如web自動(dòng)化還做了瀏覽器js插件去適配測(cè)試。
后面,有接收到任務(wù)要求做PC應(yīng)用程序的自動(dòng)化,當(dāng)時(shí)認(rèn)為QTP太大了,而且需要破解等比較麻煩,就改用了AutoIT工具去實(shí)現(xiàn)。
AutoIT這款工具,大部分是被用來做游戲外掛的,所以想做外掛的人不要局限于按鍵精靈。
二.AutoIT范例
首先介紹下AutoIt常用的兩個(gè)菜單項(xiàng),如下圖:
1.幫助文檔
2.autoit window info分為32位系統(tǒng)識(shí)別和64位系統(tǒng)識(shí)別,識(shí)別程序應(yīng)用的元素。類似于selenium抓取的html元素,又類似于uiautomationview這個(gè)。
識(shí)別元素界面打開如下:請(qǐng)記住紅色圈圈內(nèi)圖標(biāo)。抓取元素就是靠點(diǎn)擊該按鈕不放手拖動(dòng)到你需要的產(chǎn)品上去識(shí)別。粉紅部分就是抓取到的信息
案例腳本如下:
#cs對(duì)計(jì)算器進(jìn)行自動(dòng)化測(cè)試自動(dòng)計(jì)算4+5=9結(jié)束后關(guān)閉計(jì)算器窗口#ceCalc()Func Calc() Local $time=2000; ;運(yùn)行計(jì)算器 Run("calc.exe"); ; 等待1s,計(jì)算器窗口出現(xiàn) Local $hWnd = WinWait("[CLASS:CalcFrame]", "", 1) ;激活該窗口,即將光標(biāo)定位到該窗口 WinActivate("[CLASS:CalcFrame]"); ;點(diǎn)擊4 ControlClick($hWnd, "", "Button4"); ; 等待2s觀察效果. Sleep($time); ;點(diǎn)擊+ ControlClick($hWnd, "", "Button23"); Sleep($time); ;點(diǎn)擊5 ControlClick($hWnd, "", "Button10"); Sleep($time); ;點(diǎn)擊= ControlClick($hWnd, "", "Button28"); Sleep($time); WinClose("[CLASS:CalcFrame]");EndFunc ;==>Calc
三. AutoIt支持其他語(yǔ)言
AutoIt支持VBScript腳本,范例如下:
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Example WSH Script (VBScript)'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Require Variants to be declared before usedOption Explicit''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Declare Variables & Objects''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Dim oShellDim 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 activeoAutoIt.WinWaitActive "Calculator", ""' Send some keystokes to calcoAutoIt.Send "2*2="oAutoIt.Sleep 500oAutoIt.Send "4*4="oAutoIt.Sleep 500oAutoIt.Send "8*8="oAutoIt.Sleep 500oAutoIt.WinClose "Calc", ""oAutoIt.WinWaitClose "Calc", ""WScript.Quit
AutoIt支持C++,同時(shí)也支持java,VB, Delphi, C等 。
均可以在以上語(yǔ)言開發(fā)的同時(shí)嵌入Autoit。
四.備注
以上腳本適用于win32標(biāo)準(zhǔn)控件框架,當(dāng)你的框架并非win32標(biāo)準(zhǔn)時(shí),可以使用autoit走相對(duì)坐標(biāo)去實(shí)現(xiàn)或者使用sikuli去實(shí)現(xiàn),總之,自動(dòng)化是應(yīng)產(chǎn)品而選擇方案的。
詳細(xì)腳本就不解釋了,可以參考手冊(cè),手冊(cè)內(nèi)有非常多的案例。
做自動(dòng)化或者說測(cè)試,個(gè)人感覺需要培養(yǎng)一種思路,而不是說會(huì)去用種工具就可以了。
同時(shí),希望有志于往測(cè)試發(fā)展的人,還是希望至少能熟悉一種語(yǔ)言,這真的是優(yōu)勢(shì),熟悉語(yǔ)言也可以為工作提供不少的幫助。
文章寫的這些僅僅只是入門的一種,其實(shí)需要培養(yǎng)的思路是有助于去做一些框架的架設(shè)等事情,其實(shí)可以去熟悉下微軟的SDTE。
相關(guān)產(chǎn)品
免責(zé)聲明
- 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。