以后不在此处更新日志了,欢迎测友到新窝找我:http://www.wuchuanhu.cn/

使用AutoIT测试系统登录实例四(IE窗口大小控制)

上一篇 / 下一篇  2012-02-08 10:43:34 / 个人分类:AutoIT实战

使用AutoIT中_IECreate打开的页面,往往不是最大化的。很多时候,一些重要的页面错误效果没有被正确的截屏,就是因为窗口没有最大化错误信息被遮住。为了解决这一情况,需要在脚本中增加最大化IE窗口的功能。
目前AutoIT主要有三种方法实现IE窗口的最大化。
(1)设置IE窗口属性值
_IEPropertySet ($OIE, "left",0)
_IEPropertySet ($OIE, "top",0)
_IEPropertySet ($OIE, "height",@DesktopHeight-30)
_IEPropertySet ($OIE, "width",@DesktopWidth)
(2)向窗口发送组合快捷键
WinActivate($title,"")
Send("!+{SPACE}+X")
这个方法需要注意的是:一定要先使用WinActivate方法激活窗口,否则如果页面存在输入框,则这个快捷键将可能被输入到输入框中,达不到最大化IE窗口的效果。
(3)使用WinSetState设置窗口状态
WinSetState($title,"",@SW_MAXIMIZE)
这个方法使用的比较普遍。
 
上面提到的后两种方法,前提都是要先获取IE当前页面的title,可使用以下办法:
$doc = _IEDocGetObj($OIE)   ;创建一个document对象
$title=$doc.title           ;获取document对象的Title属性
 
下面发出完整的脚本片段:
#Include <IE.au3>
#Include<ScreenCapture.au3>
#Include<BaseOp.au3>
#Include<GlobalPara.au3>
WriteToFile($LogPath,"开始测试Login")
$sheet=Gettestsheet($TestCasePath,1)
Dim $Tester=$sheet.Cells(2,1).value
Dim $TesterPWD=$sheet.cells(2,2).value
LoginTest($Tester,$TesterPWD)
CloseExcel()
Func LoginTest($Tester,$TesterPWD)
$Original=GetRecordCount("Select * from UserLoginLog where phonenumber="&$Tester)
$OIE = _IECreate($testURL,0,1,1,0)
$doc = _IEDocGetObj($OIE)
$title=$doc.title
;WinSetState($title,"",@SW_MAXIMIZE)
;WinActivate($title,"")
;Send("!+{SPACE}+X")
_IEPropertySet ($OIE, "left",0)
_IEPropertySet ($OIE, "top",0)
_IEPropertySet ($OIE, "height",@DesktopHeight-30)
_IEPropertySet ($OIE, "width",@DesktopWidth)
_IELoadWait($OIE)
Local $Login=_IELinkClickByText($OIE,"登录")
While Not $isobj
   If $timer>=3 Then
      WriteToFile($LogPath,"找不到输入框,有可能是上一个用户没有正常退出")
   $test= CaptureScreen($ImagePath,"LoginError"&$Tester)
      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
   $timer=0
   $isobj=False
Local $Inputcheck= _IEGetObjByName($OIE,"txtRadomPicCode")
If Not IsObj($Inputcheck) Then
$spans=_IETagNameGetCollection($OIE,"span")
if $spans(0).innertext==("用户"&$Tester) Then
   SetError("5")
Else
   $test= CaptureScreen($ImagePath,"CheckCodeError"&$Tester)
   SetError("4")
   EndIf
Else
$checkCode=InputBox("提示","请输入验证码:")
$Inputcheck.value=$checkCode
Local $btn= _IEGetObjByName($OIE,"btnSubmitLogin")
_IEAction($btn,"Click")
_IELoadWait($OIE)
Sleep(2000)
Local $Loginwrap = _IEGetObjById($OIE,"Loginwrap")
_IELoadWait($OIE)
If Not IsObj($Loginwrap) Then
   $spans=_IETagNameGetCollection($OIE,"span")
   if $spans(0).innertext==("用户"&$Tester) Then
     SetError("1")
  Else
     $test= CaptureScreen($ImagePath,"LoginError"&$Tester)
     SetError("3")
   EndIf
Else
   $test= CaptureScreen($ImagePath,"LoginError"&$Tester)
   SetError("3")
EndIf
EndIf
Switch @error
   Case 1
   $result="成功"
   Case 2
   $result="登录框上的按钮不见啦"
   Case 3
   $result="抱歉,登录失败"
   Case 4
   $result="登录时,验证码输入框不存在"
   Case 5
   $result="用户已经登录了"
   Case Else
   $result="未定义的错误"
EndSwitch
$new = GetRecordCount("Select * from UserLoginLog where phonenumber="&$Tester)
If $new<=$Original Then
   $result=$result&",没有记录数据库日志"
Else
   $result=$result&",记录了数据库日志"
EndIf
WriteToFile($LogPath,"测试号码是:"&$Tester&"密码是:"&$TesterPWD&"结果为:"&$result)
$IsClose=_IEQuit($OIE)
If $IsClose<>1 Then
   $test= CaptureScreen($ImagePath,"quitIEError"&$Tester)
   ProcessClose($OIE)
EndIf
Return $result
EndFunc

TAG: aslandhu autoit Autoit AutoIT web自动化测试

 

评分:0

我来说两句

Open Toolbar