全國高等學校英語A級與計算機水平考試自動測試

    全國高等學校計算機水平考試(原廣東省計算機等級考試)一年兩次,每次考試前都要求進行至少兩次針對實驗室環境的測試,目的是檢查考試實驗室網絡通信、服務器和工作站軟、硬件設置是否正常以及熟悉考試的整個流程和故障排除,以確保在正式考試時可以順利進行。由於當前實驗室在用的計算機有四百多套,要是逐臺逐臺的進行登錄測試,則需要耗費大量的時間和精力,效率較低。當初在剛接手這個任務時,還真的找了幾個班級過來進行測試,相當費事,後來實在受不了這種折騰,用Autoit寫了個自動登錄測試腳本,實現了自動登錄考試系統,自動提交試卷,整個測試全自動完成。通過這種方式,一個人就可以在較短的時間內完成幾百臺機器的測試。
    腳本的原理是首先通過Autoit在IE瀏覽器上打開考試服務器地址,捕抓到當前計算機名稱,然後打開列有計算機名稱對應的賬號與密碼清單的Excel文件,遍歷整個Excel文件,逐一對比當前計算機名稱與文件清單上的計算機名稱,如果有一致的,則獲取相對應的賬號與密碼並將其填寫到登錄頁面的表單裏,然後提交,完成登錄。。。腳本在靜置30多分鐘後,自動點擊交卷按鈕完成自動交卷。
    Autoit腳本代碼如下:
 

 

  1. ;###############################################################  
  2. ;  
  3. ;        Author: badegg  
  4. ;        Email: [email protected]  
  5. ;        Last Edit: 2012-12-03  
  6. ;  
  7. ;###############################################################  
  8.  
  9. #include<IE.au3>  
  10. #include<excel.au3>  
  11.  
  12. ;打開考試服務器的頁面  
  13. $oIE=_IECreate("http://10.10.200.11:8000",0,1,1,1)  
  14. $oForm= _IEFormGetObjByName($oIE,"login")  
  15. $oQueryname= _IEformelementgetobjByname($oForm,"SID")  
  16. $oQueryPasswd= _IEFormElementGetObjByName($oForm,"password")  
  17. sleep(3000)         ; Give it some time to load the web page  
  18.  
  19. ;打開包含登錄帳號與密碼的Excel文件  
  20. ;Excel文件格式:第一列爲機器名稱,第二列爲登錄帳號,第三列爲考生姓名,第四列爲登錄密碼  
  21. $sFilepath1=@ScriptDir & "\studentid.xls" ;this file already exist  
  22. $oExcel=_excelbookopen($sFilepath1) ;open this file  
  23.  
  24. if @error=1 Then 
  25.     MsgBox(0,"錯誤!","不能建立新的工作表.")  
  26.     Exit  
  27. ElseIf @error=2 Then 
  28.     MsgBox(0,"錯誤!","找不到指定的文件!")  
  29.     Exit  
  30. EndIf  
  31.  
  32. ;轉換計算機名稱爲大寫字符  
  33. $osname1= StringUpper(@ComputerName)  
  34.  
  35. ;從第二行開始遍歷Excel文件,提取計算機名稱一致的帳號與密碼,並填入登錄頁面的表單中  
  36. $i=1  
  37. while 1  
  38.    If _excelreadcell($oExcel,$i,1) Then 
  39.          $scellValue= _excelreadcell($oExcel,$i,1)  
  40.          If $scellValue==$osname1 then 
  41.            $username= _excelreadcell($oExcel,$i,2)  
  42.            $userpawd= _excelreadcell($oExcel,$i,4)  
  43.            _IEFormElementSetValue($oQueryname,$username)  
  44.            _IEFormElementSetValue($oQueryPasswd,$userpawd)  
  45.            ExitLoop  
  46.          EndIf  
  47.          $i=$i+1  
  48.    EndIf  
  49. WEnd  
  50.  
  51. ;提交按鈕,_IEFormSubim函數的第二個參數必須爲0,也就是不等待頁面下載完畢,如果設置爲1,則有錯誤。  
  52. $slogin=_IEFormSubmit($oForm,0)  
  53.  
  54. ;判斷提交頁面後是否有錯誤返回,如果沒有錯誤,則關閉Excel文件; _IEFormSubmit函數提交成功後返回值爲-1,有錯誤則爲0並設置@error.  
  55. ;如果將_IEFormSubmit函數第二個參數設置爲0,立即返回,不等待頁面下載結束,後面的錯誤類型判斷還有沒有意義?  
  56. If $slogin=-1 Then 
  57.    _ExcelBookClose($oExcel,0,0) ;close Excel  
  58. Else 
  59.    Switch @error  
  60.       Case 1  
  61.          msgbox(0,"Errorinfo","General Error")  
  62.       case 3  
  63.          msgbox(0,"Errorinfo","Invalid Data Type")  
  64.       case 4  
  65.          msgbox(0,"Errorinfo","Invalid Object Type")  
  66.       case 6  
  67.          msgbox(0,"Errorinfo","Load Wait Timeout")  
  68.       case 8  
  69.          msgbox(0,"Errorinfo","Access Is Denied")  
  70.       case 9  
  71.          msgbox(0,"Errorinfo","Client Disconnected")  
  72.       case Else 
  73.          MsgBox(0,"Errorinfo","提交信息有錯誤!")  
  74.    EndSwitch  
  75. EndIf  
  76.  
  77. ;等待35分鐘(毫秒單位)  
  78. Sleep(2100000)  
  79.  
  80.  
  81. ;自動交卷  
  82. If WinActive("考試系統客戶端(WEB版)V4.0-《英語應用能力A級》",""Then 
  83.    WinActivate("考試系統客戶端(WEB版)V4.0-《英語應用能力A級》","")  
  84.    ControlClick("考試系統客戶端(WEB版)V4.0-《英語應用能力A級》","","Button7")  
  85.    if not WinActive("系統信息","交卷後將不能再進入考試,你真的要交卷嗎?"Then WinWaitActive("系統信息","交卷後將不能再進入考試,你真的要交卷嗎?")  
  86.    send("!Y")  
  87.    if not WinActive("系統信息","你的身份證號碼是"Then WinWaitActive("系統信息","你的身份證號碼是")  
  88.    ControlClick("系統信息","確定","[CLASS:Button; INSTANCE:1]")  
  89.    if not WinActive("系統信息","已成功把你的數據上傳到服務器"Then WinWaitActive("系統信息","已成功把你的數據上傳到服務器")  
  90.    ControlClick("系統信息","確定","[CLASS:Button; INSTANCE:1]")  
  91. ElseIf WinActive("考試系統客戶端(WEB版)V4.0-《計算機應用考試模塊》",""Then 
  92.    WinActivate("考試系統客戶端(WEB版)V4.0-《計算機應用考試模塊》","")  
  93.    ControlClick("考試系統客戶端(WEB版)V4.0-《計算機應用考試模塊》","","Button7")  
  94.    if not WinActive("系統信息","交卷前如果已打開了Word"Then WinWaitActive("系統信息","交卷前如果已打開了Word")  
  95.    ControlClick("系統信息","是","[CLASS:Button; INSTANCE:1]")  
  96.    $ExcelPID=ProcessExists("Excel.exe")  
  97.    $WordPID=ProcessExists("Word.exe")  
  98.    $PptPID=ProcessExists("Powerpnt.exe")  
  99.    If $ExcelPID Then ProcessClose($ExcelPID)  
  100.    If $wordPid Then ProcessClose($wordpid)  
  101.    If $pptpid then ProcessClose($pptpid)  
  102.    sleep(5000)  
  103.    If WinActive("系統信息","請保存打開的OFFICE操作題目"Then ;WinWaitActive("系統信息","請保存打開的OFFICE操作題目")  
  104.         ControlClick("系統信息","是","[CLASS:Button; INSTANCE:1]")  
  105.    EndIf  
  106.    Sleep(5000)  
  107.    if WinActive("系統信息","交卷後將不能再進入考試,你真的要交卷嗎?"Then ;WinWaitActive("系統信息","交卷後將不能再進入考試,你真的要交卷嗎?")  
  108.        send("!Y")  
  109.    EndIf  
  110.    sleep(5000)  
  111.    if not WinActive("系統信息","你的身份證號碼是"Then WinWaitActive("系統信息","你的身份證號碼是")  
  112.    ControlClick("系統信息","確定","[CLASS:Button; INSTANCE:1]")  
  113.    if not WinActive("系統信息","已成功把你的數據上傳到服務器"Then WinWaitActive("系統信息","已成功把你的數據上傳到服務器")  
  114.    ControlClick("系統信息","確定","[CLASS:Button; INSTANCE:1]")  
  115. Else 
  116.    MsgBox(0,"Info","無法自動交卷!請手工提交試卷!")  
  117. EndIf  
  118.  
  119. ;刪除腳本程序自身  
  120. FileDelete(@ScriptDir & "\studentid.xls")  
  121. Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE)  
  122.  
  123. ;退出程序  
  124. exit  
附Excel文件截圖:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章