AutoIT 是一款非常强大的免费功能 自动化测试 工具,使用它可以轻松实现 web 和winform的自动化测试。其脚本语言AU3语法类似于VB语言和vbs脚本语言,对于经常使用 QTP 的童鞋来说,非常容
#Include<ScreenCapture.au3>
#Include<BaseOp.au3>
Global $hBmp
Global $test
Global $result
Global $isobj=False
Global $timer=1
Global $OIE = _IECreate("http://192.168.85.36/web",0,1,1,0)
Global $Tester="13200000001"
Global $TesterPWD="123456"
_IELoadWait($OIE)
Sleep(2000)
Local $Login=_IELinkClickByText($OIE,"登录")
_IELoadWait($OIE)
While Not $isobj
If $timer>=3 Then
SetError("2")
ExitLoop
EndIf
$timer+=1
Local $Inputname = _IEGetObjByName($OIE,"txtPhoneNum")
Local $Inputpassword = _IEGetObjByName($OIE,"txtPassword")
If Not IsObj($Inputname)Or Not IsObj($Inputpassword) Then
Sleep(2000)
Else
$isobj=True
$Inputname.value=$Tester
$Inputpassword.value=$TesterPWD
EndIf
WEnd
Local $Inputcheck= _IEGetObjByName($OIE,"txtRadomPicCode")
If Not IsObj($Inputcheck) Then
$test= CaptureScreen("C:\Documents and Settings\aslandhu\桌面\autoit3","CheckCodeError")
$spans=_IETagNameGetCollection($OIE,"span")
if $spans(0).innertext==("用户"&$Tester) Then ;务必要注意这里span属性innertext的访问方式
SetError("5")
Else
SetError("4")
EndIf
Else
$checkCode=InputBox("提示","请输入验证码:")
$Inputcheck.value=$checkCode
Local $btn= _IEGetObjByName($OIE,"btnSubmitLogin")
_IEAction($btn,"Click")
_IELoadWait($OIE)
Local $Loginwrap = _IEGetObjById($OIE,"Loginwrap")
_IELoadWait($OIE)
If Not IsObj($Loginwrap) Then
SetError("3")
Else
SetError("1")
EndIf
EndIf
Switch @error
Case 1
$result="成功"
Case 2
$result="登录框上的按钮不见啦"
Case 3
$result="抱歉,登录失败"
Case 4
$result="登录时,验证码输入框不存在"
Case 5
$result="用户已经登录了"
Case Else
$result="未定义的错误"
EndSwitch
MsgBox(1,"测试结果",$result) 现在对脚本中几个关键的地方做一些解释。 (1)在自动化测试中,因为某些原因,一些控件不能马上展现,所以在测试脚本中我们往往会加入一些等待功能,确保这些控件可以被操作,不会出现对象不存在至错的情况。这段脚本中在识别登录框中用户账号密码输入框时,增加了检查功能,当输入框不存在的时候就等待两秒,两秒后再尝试。同时设置了尝试次数3次。 If $timer>=3 Then
SetError("2")
ExitLoop
EndIf (2)在QTP中截屏功能比较实用,在AutoIt中同样提供了截屏的API。 $test= CaptureScreen("C:\Documents and Settings\aslandhu\桌面\autoit3","CheckCodeError") (3)在AutoIT的web自动化中,以下函数非常常见: _IELoadWait:等待页面加载完成 _IEGetObjByName:通过名称获取对象,与此对应的还有_IEGetObjByID:通过ID获取对象 _IETagNameGetCollection:获取所有的Tagname为传入值的对象