使用AutoIt做广东省英语A级与计算机水平考试的考前测试

    全国高等学校计算机水平考试(原广东省计算机等级考试)一年两次,每次考试前都要求进行至少两次针对 实验室环境的测试,目的是检查考试实验室网络通信、服务器和工作站软、硬件设置是否正常以及熟悉考试的整个流程和故障排除, 以确保在正式考试时可以顺利进行。由于当前实验室在用的计算机有四百多套,要是逐台逐台的进行登录测试,则需要耗费大量的时间和精力,效率较低。当初在刚接手这个任务时,还真的找了几个班级过来进行测试,相当费事,后来实在受不了这种折腾,用Autoit写了个自动登录测试脚本,实现了自动登录考试系统,自动提交试卷,整个测试全自动完成。通过这种方式,一个人就可以在较短的时间内完成几百台机器的测试。
    脚本的原理是首先 通过Autoit 在IE浏览器上打开考试服务器地址,捕抓到当前计算机名称,然后打开列有计算机名称对应的账号与密码清单的Excel文件,遍历整个Excel文件,逐一对比当前计算机名称与文件清单上的计算机名称,如果有一致的,则获取相对应的账号与密码并将其填写到登录页面的表单里,然后提交,完成登录。。。脚本在静置30多分钟后,自动点击交卷按钮完成自动交卷。
    Autoit脚本代码如下:
;###############################################################  
;  
;        Author: badegg  
;        Email: 11323650@qq.com  
;        Last Edit: 2012-12-03  
;  
;###############################################################  
 
#include<IE.au3>  
#include<excel.au3>  
 
;打开考试服务器的页面  
$oIE=_IECreate("http://10.10.200.11:8000",0,1,1,1)  
$oForm= _IEFormGetObjByName($oIE,"login")  
$oQueryname= _IEformelementgetobjByname($oForm,"SID")  
$oQueryPasswd= _IEFormElementGetObjByName($oForm,"password")  
sleep(3000)         ; Give it some time to load the web page  
 
;打开包含登录帐号与密码的Excel文件  
;Excel文件格式:第一列为机器名称,第二列为登录帐号,第三列为考生姓名,第四列为登录密码  
$sFilepath1=@ScriptDir & "\studentid.xls" ;this file already exist  
$oExcel=_excelbookopen($sFilepath1) ;open this file  
 
if @error=1 Then 
    MsgBox(0,"错误!","不能建立新的工作表.")  
    Exit  
ElseIf @error=2 Then 
    MsgBox(0,"错误!","找不到指定的文件!")  
    Exit  
EndIf  
 
;转换计算机名称为大写字符  
$osname1= StringUpper(@ComputerName)  
 
;从第二行开始遍历Excel文件,提取计算机名称一致的帐号与密码,并填入登录页面的表单中  
$i=1  
while 1  
   If _excelreadcell($oExcel,$i,1) Then 
         $scellValue= _excelreadcell($oExcel,$i,1)  
         If $scellValue==$osname1 then 
           $username= _excelreadcell($oExcel,$i,2)  
           $userpawd= _excelreadcell($oExcel,$i,4)  
           _IEFormElementSetValue($oQueryname,$username)  
           _IEFormElementSetValue($oQueryPasswd,$userpawd)  
           ExitLoop  
         EndIf  
         $i=$i+1  
   EndIf  
WEnd  
 
;提交按钮,_IEFormSubim函数的第二个参数必须为0,也就是不等待页面下载完毕,如果设置为1,则有错误。  
$slogin=_IEFormSubmit($oForm,0)  
 
;判断提交页面后是否有错误返回,如果没有错误,则关闭Excel文件; _IEFormSubmit函数提交成功后返回值为-1,有错误则为0并设置@error.  
;如果将_IEFormSubmit函数第二个参数设置为0,立即返回,不等待页面下载结束,后面的错误类型判断还有没有意义?  
If $slogin=-1 Then 
   _ExcelBookClose($oExcel,0,0) ;close Excel  
Else 
   Switch @error  
      Case 1  
         msgbox(0,"Errorinfo","General Error")  
      case 3  
         msgbox(0,"Errorinfo","Invalid Data Type")  
      case 4  
         msgbox(0,"Errorinfo","Invalid Object Type")  
      case 6  
         msgbox(0,"Errorinfo","Load Wait Timeout")  
      case 8  
         msgbox(0,"Errorinfo","Access Is Denied")  
      case 9  
         msgbox(0,"Errorinfo","Client Disconnected")  
      case Else 
         MsgBox(0,"Errorinfo","提交信息有错误!")  
   EndSwitch  
EndIf  
 
;等待35分钟(毫秒单位)  
Sleep(2100000)  
 
 
;自动交卷  
If WinActive("考试系统客户端(WEB版)V4.0-《英语应用能力A级》","") Then 
   WinActivate("考试系统客户端(WEB版)V4.0-《英语应用能力A级》","")  
   ControlClick("考试系统客户端(WEB版)V4.0-《英语应用能力A级》","","Button7")  
   if not WinActive("系统信息","交卷后将不能再进入考试,你真的要交卷吗?") Then WinWaitActive("系统信息","交卷后将不能再进入考试,你真的要交卷吗?")  
   send("!Y")  
   if not WinActive("系统信息","你的身份证号码是") Then WinWaitActive("系统信息","你的身份证号码是")  
   ControlClick("系统信息","确定","[CLASS:Button; INSTANCE:1]")  
   if not WinActive("系统信息","已成功把你的数据上传到服务器") Then WinWaitActive("系统信息","已成功把你的数据上传到服务器")  
   ControlClick("系统信息","确定","[CLASS:Button; INSTANCE:1]")  
ElseIf WinActive("考试系统客户端(WEB版)V4.0-《计算机应用考试模块》","") Then 
   WinActivate("考试系统客户端(WEB版)V4.0-《计算机应用考试模块》","")  
   ControlClick("考试系统客户端(WEB版)V4.0-《计算机应用考试模块》","","Button7")  
   if not WinActive("系统信息","交卷前如果已打开了Word") Then WinWaitActive("系统信息","交卷前如果已打开了Word")  
   ControlClick("系统信息","是","[CLASS:Button; INSTANCE:1]")  
   $ExcelPID=ProcessExists("Excel.exe")  
   $WordPID=ProcessExists("Word.exe")  
   $PptPID=ProcessExists("Powerpnt.exe")  
   If $ExcelPID Then ProcessClose($ExcelPID)  
   If $wordPid Then ProcessClose($wordpid)  
   If $pptpid then ProcessClose($pptpid)  
   sleep(5000)  
   If WinActive("系统信息","请保存打开的OFFICE操作题目") Then ;WinWaitActive("系统信息","请保存打开的OFFICE操作题目")  
        ControlClick("系统信息","是","[CLASS:Button; INSTANCE:1]")  
   EndIf  
   Sleep(5000)  
   if WinActive("系统信息","交卷后将不能再进入考试,你真的要交卷吗?") Then ;WinWaitActive("系统信息","交卷后将不能再进入考试,你真的要交卷吗?")  
       send("!Y")  
   EndIf  
   sleep(5000)  
   if not WinActive("系统信息","你的身份证号码是") Then WinWaitActive("系统信息","你的身份证号码是")  
   ControlClick("系统信息","确定","[CLASS:Button; INSTANCE:1]")  
   if not WinActive("系统信息","已成功把你的数据上传到服务器") Then WinWaitActive("系统信息","已成功把你的数据上传到服务器")  
   ControlClick("系统信息","确定","[CLASS:Button; INSTANCE:1]")  
Else 
   MsgBox(0,"Info","无法自动交卷!请手工提交试卷!")  
EndIf  
 
;删除脚本程序自身  
FileDelete(@ScriptDir & "\studentid.xls")  
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)  
 
;退出程序  
exit  


附Excel文件截图:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值