using AutoIt to automate WMP (play video)

上一篇 / 下一篇  2009-12-30 17:31:30 / 个人分类:测试经验教训

If embedded in IE:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <common.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <date.au3>
#include <ScreenCapture.au3>
#include <IE.au3>

; Define global parameters;
; Set Global Values
$Network_Path="\\_Projects\Test Projects\ WMP Plugin\Version 1.2\Test Data\"
$Test_Scripts_Path=$Network_Path&"Test Scripts\"
$Local_Path="C:\temp\ WMP Plugin\"
dim $TestResultFiles[3]
;$VIQ_Page_URL="C:\Program Files\\ WMP Plug-in\.html"
$VIQ_Page_URL="http://192.168.1.2:9091/.html"
$WMP_Title = "Windows Media Player" ; Windows Media Player Main Screen Title
Global $page

Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=\\_projects\test projects\wmp plugin\version 1.2\test data\test scripts\form1.kxf
$TestConsoleForm. = GUICreate("Test Console", 633, 454, 190, 111)
GUISetOnEvent($GUI_EVENT_CLOSE, "TestConsoleFormClose")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TestConsoleFormMinimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "TestConsoleFormMaximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "TestConsoleFormRestore")
$bSelectDataFile = GUICtrlCreateButton("Browse", 440, 120, 75, 25, 0)
GUICtrlSetOnEvent(-1, "bSelectDataFileClick")
$SelectDataFile = GUICtrlCreateLabel("Select test data file:", 16, 120, 97, 17)
GUICtrlSetOnEvent(-1, "SelectDataFileClick")
Global $iSelectDataFile = GUICtrlCreateInput("iSelectDataFile", 208, 120, 209, 21)
GUICtrlSetOnEvent(-1, "iSelectDataFileChange")

$bRunScript. = GUICtrlCreateButton("Run", 208, 216, 75, 25, 0)
GUICtrlSetOnEvent(-1, "bRunScriptClick")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $bSelectDataFile
           
    EndSwitch
WEnd

Func bSelectDataFileClick()
    $var = FileOpenDialog("Select a file", $Network_Path, "All (*.*)")
    ;Global $Test_Data_File
    _GUICtrlEdit_SetText($iSelectDataFile, $var)

EndFunc   ;==>bSelectDataFileClick

Func GetTestType()
    Global $sTestType
   
    if StringInStr($Test_Data_File, "Baseline") Then
        $sTestType= "Baseline"
    elseif StringInStr($Test_Data_File, "Web") Then
        $sTestType= "Web"
    Elseif StringInStr($Test_Data_File, "Others") Then
        $sTestType= "Others"
    EndIf
    return $sTestType
EndFunc

Func CreateTestResultFile($TestCase_ID,$File_Name,$CurrentDT)
   
    $sTestType=GetTestType()   
   
    $TestResult_Dir_Name = $Network_Path & "Test Results\" & $sTestType&"_" & $CurrentDT & "\"
    $TestResult_File = $TestResult_Dir_Name&$sTestType&"_" & $CurrentDT & ".txt";
    $Url_List_File = $Network_Path & "Test Results\" & "_WMP_URL_List-"&$sTestType&"_" & $CurrentDT & ".txt";
       
    DirCreate($TestResult_Dir_Name)
    DirCreate($Local_Path)
   
;~     ; Copy files to local path if they do not exist
;~         If Not FileExists($Local_Path & $File_Name) Then
;~             If $Codec == "Mpeg4" Then
;~                 FileCopy($Network_Path & "Mpeg4 Files\" & $File_Name, $Local_Path)
;~             ElseIf $Codec == "H.264" Then
;~                 FileCopy($Network_Path & "H.264 Files\" & $File_Name, $Local_Path)
;~             ElseIf $Codec == "Playlist" Then
;~                 FileCopy($Network_Path & "Playlist\" & $File_Name, $Local_Path)
;~             EndIf
;~             If $Codec == "External" Then
;~                 FileCopy($Network_Path & "External .mp4 files\" & $File_Name, $Local_Path)
;~             EndIf
;~         EndIf
       
        ; Create Test Result File
       
        If Not FileExists($TestResult_File) Then
           
            FileChangeDir($TestResult_Dir_Name)
            _FileCreate($TestResult_File)
            ;FileWrite($TestResult_File,"OS:"&$OS&@CRLF)
            FileWrite($TestResult_File, "Windows Media Player:" & $WMP_CurVersion & @CRLF)
            ;FileWrite($TestResult_File,"Web Browser:"&$Browser&@CRLF&@CRLF)
        EndIf
       
        WinActivate($WMP_Title)
       
        FileWrite($TestResult_File, "executing Test Case " & $TestCase_ID & " on " & $CurrentDT & @CRLF & @CRLF)
       
        $TestResultFiles[1]=$TestResult_File
        $TestResultFiles[0]=$TestResult_Dir_Name
        $TestResultFiles[2]=$Url_List_File
       
        Return $TestResultFiles
EndFunc  

Func OpenFile($File_Path,$File_Name)
    Send("^o")
    WinWaitActive("Open")
    $File_To_Enter = StringReplace($File_Path & $File_Name, "+", "{+}")
    ControlSend("Open", "", "[CLASS:Edit; INSTANCE:1]", $File_To_Enter)
    ControlClick("Open", "", "&Open")
    MsgBox(0, "Open File", $File_To_Enter, 5)
EndFunc

Func OpenURL($Url,$File_Name)
    Send("^u")
    WinWaitActive("Open URL")
    $URL_To_Enter = StringReplace($Url & $File_Name, "+", "{+}")
    ControlSend("Open URL", "", "[CLASS:Edit; INSTANCE:1]", $URL_To_Enter)
    ControlClick("Open URL", "Enter the URL", "OK")
    MsgBox(0, "Open URL", $URL_To_Enter, 5)
EndFunc

Func ExitRelaunchWMP()
    WinWaitActive($WMP_Title)
    ;MsgBox(0,"","test")
    Sleep(1000)
    Send("!{F4}")
    Sleep(3000)
    Run("C:\Program Files\Windows Media Player\wmplayer.exe");Launch Windows Media Player
    WinWaitActive($WMP_Title)
EndFunc

Func ExecTC()
   
    $sTestType=GetTestType()
   
    if $sTestType=="Web" Then
        ;Launch the web page;
            Global $page = _IECreate($VIQ_Page_URL)
            Send("{ENTER}")
            _IELoadWait($page)
           
    Else
        Run("C:\Program Files\Windows Media Player\wmplayer.exe");Launch Windows Media Player
    EndIf   
       
    ; Check if data file exists
    Dim $aRecords
    If Not _FileReadToArray($Test_Data_File, $aRecords) Then
        MsgBox(4096, "Error", " Error reading file to Array. Error:" & @error)
        Exit
    EndIf
   
    ; Get Current Date Time
    Global $CurrentDT = Get_Current_DT()
;~     $TestData_Line_Array = StringSplit(FileReadLine($Test_Data_File, 16), @TAB)
;~         $TestCase_ID = $TestData_Line_Array[1]
;~         MsgBox(0,"",$TestCase_ID)
    ; Read from test data file and execute test cases
    For $Line_Num = 2 To _FileCountLines($Test_Data_File)
        ;for $Line_Num = 16 To 17
        $TestData_Line_Array = StringSplit(FileReadLine($Test_Data_File, $Line_Num), @TAB)
        ;MsgBox(0,"",$TestData_Line_Array)
        $TestCase_ID = $TestData_Line_Array[1]
        $File_Path = $TestData_Line_Array[2]
        $File_Name = $TestData_Line_Array[3]
        $Url = $TestData_Line_Array[4]
        ;$Codec = $TestData_Line_Array[5]
        ;MsgBox(0,"",$TestCase_ID&$File_Path&$File_Name&$Url&$Codec)
        ;MsgBox(0,"",$TestCase_ID)
        $TestResultFiles=CreateTestResultFile($TestCase_ID,$File_Name,$CurrentDT)
       
        ; Open File or Open URL
        If ($File_Path == "" And $Url <> "") Then
            FileWrite($TestResultFiles[2], $TestCase_ID & ":  " & $Url & $File_Name & @CRLF & @CRLF)
            FileWrite($TestResultFiles[1], "URL is " & $Url & $File_Name & @CRLF & @CRLF)
            Switch $sTestType
                case "Web"
                    WinActivate($VIQ_Page_URL&" - Microsoft Internet Explorer")
                    $oInput=_IEGetObjByName($page,"inputURL")
                    $oSetvalue=_IEFormElementSetValue($oInput,$url&$File_Name)
                    $oButton=_IEGetObjByName($page,"BtnPlay")
                    _IEAction($oButton,"click")
                    MsgBox(0,"",$url&$File_Name,1)       
                Case "Baseline" or "Others"
                    WinWaitActive($WMP_Title)
                    OpenURL($Url,$File_Name)
            EndSwitch
            Sleep(5000)
           
        ElseIf ($File_Path <> "" And $Url == "") Then
            FileWrite($TestResultFiles[2], $TestCase_ID & ":  " & $File_Path & $File_Name & @CRLF & @CRLF)
            FileWrite($TestResultFiles[1], "URL is " & $File_Path & $File_Name & @CRLF & @CRLF)
            Switch $sTestType
                case "Web"
                   
                    WinActivate($VIQ_Page_URL&" - Microsoft Internet Explorer")
                    ;MsgBox(0,"",$page)
                   
                    $oInput=_IEGetObjByName($page,"inputURL")
                    ;MsgBox(0,"",$oInput)
                    $oButton=_IEGetObjByName($page,"BtnPlay")
                    $oSetvalue=_IEFormElementSetValue($oInput,$File_Path&$File_Name)
                   
                    _IEAction($oButton,"click")
                    MsgBox(0,"",$File_Path&$File_Name,1)
                Case "Baseline" or "Others"
                    WinWaitActive($WMP_Title)
                    OpenFile($File_Path,$File_Name)
            EndSwitch
            Sleep(1000)
        EndIf
       
        ; Check error messages;
        Sleep(1000)
        Error_W_Check()
        Screen_Capture_Save_to_File()
        Sleep(2000)
        FileWrite($TestResultFiles[1], $TestCase_ID & " is executed, see " & "screenshot saved under " & $TestResult_File_Snapshot & @CRLF & @CRLF)
    ExitRelaunchWMP()
    Next
EndFunc
   
Func bRunScriptClick()
   
    ExecTC()

EndFunc   ;==>bRunScriptClick

Func TestConsoleFormClose()
    ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
    ;@GUI_WINHANDLE will be either $mainwindow or $dummywindow
    If @GUI_WinHandle = $TestConsoleForm. Then
        ;MsgBox(0, "Exiting", "Exiting...",1)
        ;ExitOpt("GUIOnEventMode", 1)
        Exit
    EndIf
EndFunc   ;==>TestConsoleFormClose

Func iSelectDataFileChange()

    $Test_Data_File = _GUICtrlEdit_GetText($iSelectDataFile)
    Return $Test_Data_File
EndFunc   ;==>iSelectDataFileChange

Func SelectDataFileClick()

EndFunc   ;==>SelectDataFileClick

Func TestConsoleFormMaximize()

EndFunc   ;==>TestConsoleFormMaximize
Func TestConsoleFormMinimize()

EndFunc   ;==>TestConsoleFormMinimize
Func TestConsoleFormRestore()

EndFunc   ;==>TestConsoleFormRestore


Func RepPlayStopButton()
    Run($Test_Scripts_Path & "RepeatPlayStop.exe")
EndFunc   ;==>RepPlayStopButton


From Windows Media Player standalone

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <file.au3>
#include <common.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <date.au3>
#include <ScreenCapture.au3>
#include <IE.au3>

; Define global parameters;
; Set Global Values
$Network_Path="\Test Projects\WMP Plugin\Version 1.2\Test Data\"
$Test_Scripts_Path=$Network_Path&"Test Scripts\"
$Local_Path="C:\temp\WMP Plugin\"
dim $TestResultFiles[3]
$VIQ_Page_URL="http://192.168.1.2:9091//.htm"
$WMP_Title = "Windows Media Player" ; Windows Media Player Main Screen Title
$VIQ_Page_Title = "VIQPLUGIN ACTIVEX Test"

Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=\wmp plugin\version 1.2\test data\test scripts\form1.kxf
$TestConsoleForm. = GUICreate("Test Console", 633, 454, 190, 111)
GUISetOnEvent($GUI_EVENT_CLOSE, "TestConsoleFormClose")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "TestConsoleFormMinimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "TestConsoleFormMaximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "TestConsoleFormRestore")
$bSelectDataFile = GUICtrlCreateButton("Browse", 440, 120, 75, 25, 0)
GUICtrlSetOnEvent(-1, "bSelectDataFileClick")
$SelectDataFile = GUICtrlCreateLabel("Select test data file:", 16, 120, 97, 17)
GUICtrlSetOnEvent(-1, "SelectDataFileClick")
Global $iSelectDataFile = GUICtrlCreateInput("iSelectDataFile", 208, 120, 209, 21)
GUICtrlSetOnEvent(-1, "iSelectDataFileChange")

$bRunScript. = GUICtrlCreateButton("Run", 208, 216, 75, 25, 0)
GUICtrlSetOnEvent(-1, "bRunScriptClick")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $bSelectDataFile
           
    EndSwitch
WEnd

Func bSelectDataFileClick()
    $var = FileOpenDialog("Select a file", $Network_Path, "All (*.*)")
    ;Global $Test_Data_File
    _GUICtrlEdit_SetText($iSelectDataFile, $var)

EndFunc   ;==>bSelectDataFileClick

Func GetTestType()
    Global $sTestType
   
    if StringInStr($Test_Data_File, "Baseline") Then
        $sTestType= "Baseline"
    elseif StringInStr($Test_Data_File, "Web") Then
        $sTestType= "Web"
    Elseif StringInStr($Test_Data_File, "Others") Then
        $sTestType= "Others"
    EndIf
    return $sTestType
EndFunc

Func CreateTestResultFile($TestCase_ID,$File_Name,$CurrentDT)
   
    $sTestType=GetTestType()   
   
    $TestResult_Dir_Name = $Network_Path & "Test Results\" & $sTestType&"_" & $CurrentDT & "\"
    $TestResult_File = $TestResult_Dir_Name&$sTestType&"_" & $CurrentDT & ".txt";
    $Url_List_File = $Network_Path & "_WMP_URL_List-"&$sTestType&"_" & $CurrentDT & ".txt";
       
    DirCreate($TestResult_Dir_Name)
    DirCreate($Local_Path)
   
;~     ; Copy files to local path if they do not exist
;~         If Not FileExists($Local_Path & $File_Name) Then
;~             If $Codec == "Mpeg4" Then
;~                 FileCopy($Network_Path & "Mpeg4 Files\" & $File_Name, $Local_Path)
;~             ElseIf $Codec == "H.264" Then
;~                 FileCopy($Network_Path & "H.264 Files\" & $File_Name, $Local_Path)
;~             ElseIf $Codec == "Playlist" Then
;~                 FileCopy($Network_Path & "Playlist\" & $File_Name, $Local_Path)
;~             EndIf
;~             If $Codec == "External" Then
;~                 FileCopy($Network_Path & "External .mp4 files\" & $File_Name, $Local_Path)
;~             EndIf
;~         EndIf
       
        ; Create Test Result File
       
        If Not FileExists($TestResult_File) Then
           
            FileChangeDir($TestResult_Dir_Name)
            _FileCreate($TestResult_File)
            ;FileWrite($TestResult_File,"OS:"&$OS&@CRLF)
            FileWrite($TestResult_File, "Windows Media Player:" & $WMP_CurVersion & @CRLF)
            ;FileWrite($TestResult_File,"Web Browser:"&$Browser&@CRLF&@CRLF)
        EndIf
       
        WinActivate($WMP_Title)
       
        FileWrite($TestResult_File, "executing Test Case " & $TestCase_ID & " on " & $CurrentDT & @CRLF & @CRLF)
       
        $TestResultFiles[1]=$TestResult_File
        $TestResultFiles[0]=$TestResult_Dir_Name
        $TestResultFiles[2]=$Url_List_File
       
        Return $TestResultFiles
EndFunc  

Func OpenFile($File_Path,$File_Name)
    Send("^o")
    WinWaitActive("Open")
    $File_To_Enter = StringReplace($File_Path & $File_Name, "+", "{+}")
    ControlSend("Open", "", "[CLASS:Edit; INSTANCE:1]", $File_To_Enter)
    ControlClick("Open", "", "&Open")
    MsgBox(0, "Open File", $File_To_Enter, 5)
EndFunc

Func OpenURL($Url,$File_Name)
    Send("^u")
    WinWaitActive("Open URL")
    $URL_To_Enter = StringReplace($Url & $File_Name, "+", "{+}")
    ControlSend("Open URL", "", "[CLASS:Edit; INSTANCE:1]", $URL_To_Enter)
    ControlClick("Open URL", "Enter the URL", "OK")
    MsgBox(0, "Open URL", $URL_To_Enter, 5)
EndFunc

Func ExecTC()
   
    $sTestType=GetTestType()
   
    if $sTestType=="Web" Then
        ;Launch the web page;
            $page = _IECreate($VIQ_Page_URL)
            Send("{ENTER}")
            _IELoadWait($page)
    Else
        Run("C:\Program Files\Windows Media Player\wmplayer.exe");Launch Windows Media Player
    EndIf   
       
    ; Check if data file exists
    Dim $aRecords
    If Not _FileReadToArray($Test_Data_File, $aRecords) Then
        MsgBox(4096, "Error", " Error reading file to Array. Error:" & @error)
        Exit
    EndIf
   
    ; Get Current Date Time
    Global $CurrentDT = Get_Current_DT()
;~     $TestData_Line_Array = StringSplit(FileReadLine($Test_Data_File, 16), @TAB)
;~         $TestCase_ID = $TestData_Line_Array[1]
;~         MsgBox(0,"",$TestCase_ID)
    ; Read from test data file and execute test cases
    For $Line_Num = 2 To _FileCountLines($Test_Data_File)
        ;for $Line_Num = 16 To 17
        $TestData_Line_Array = StringSplit(FileReadLine($Test_Data_File, $Line_Num), @TAB)
        ;MsgBox(0,"",$TestData_Line_Array)
        $TestCase_ID = $TestData_Line_Array[1]
        $File_Path = $TestData_Line_Array[2]
        $File_Name = $TestData_Line_Array[3]
        $Url = $TestData_Line_Array[4]
        ;$Codec = $TestData_Line_Array[5]
        ;MsgBox(0,"",$TestCase_ID&$File_Path&$File_Name&$Url&$Codec)
        ;MsgBox(0,"",$TestCase_ID)
        $TestResultFiles=CreateTestResultFile($TestCase_ID,$File_Name,$CurrentDT)
       
        ; Open File or Open URL
        If ($File_Path == "" And $Url <> "") Then
            FileWrite($TestResultFiles[2], $TestCase_ID & ":  " & $Url & $File_Name & @CRLF & @CRLF)
            FileWrite($TestResultFiles[1], "URL is " & $Url & $File_Name & @CRLF & @CRLF)
            Switch $sTestType
                case "Web"
                    WinActivate($VIQ_Page_Title&" - Microsoft Internet Explorer")
                    $oInput=_IEGetObjByName($page,"inputURL")
                    $oSetvalue=_IEFormElementSetValue($oInput,$url&$File_Name)
                    $oButton=_IEGetObjByName($page,"BtnPlay")
                    _IEAction($oButton,"click")
                    MsgBox(0,"",$url&$File_Name,1)       
                Case "Baseline" or "Others"
                    WinWaitActive($WMP_Title)
                    OpenURL($Url,$File_Name)
            EndSwitch
            Sleep(5000)
           
        ElseIf ($File_Path <> "" And $Url == "") Then
            FileWrite($TestResultFiles[2], $TestCase_ID & ":  " & $File_Path & $File_Name & @CRLF & @CRLF)
            FileWrite($TestResultFiles[1], "URL is " & $File_Path & $File_Name & @CRLF & @CRLF)
            Switch $sTestType
                case "Web"
                    WinActivate($VIQ_Page_URL&" - Microsoft Internet Explorer")
                    $oInput=_IEGetObjByName($page,"inputURL")
                    $oSetvalue=_IEFormElementSetValue($oInput,$File_Path&$File_Name)
                    $oButton=_IEGetObjByName($page,"BtnPlay")
                    _IEAction($oButton,"click")
                    MsgBox(0,"",$File_Path&$File_Name,1)
                Case "Baseline" or "Others"
                    WinWaitActive($WMP_Title)
                    OpenFile($File_Path,$File_Name)
            EndSwitch
            Sleep(1000)
        EndIf
       
        ; Check error messages;
        Sleep(1000)
        Error_W_Check()
        Screen_Capture_Save_to_File()
        Sleep(2000)
        FileWrite($TestResultFiles[1], $TestCase_ID & " is executed, see " & "screenshot saved under " & $TestResult_File_Snapshot & @CRLF & @CRLF)
    Next
EndFunc
   
Func bRunScriptClick()
   
    ExecTC()

EndFunc   ;==>bRunScriptClick

Func TestConsoleFormClose()
    ;Note: at this point @GUI_CTRLID would equal $GUI_EVENT_CLOSE,
    ;@GUI_WINHANDLE will be either $mainwindow or $dummywindow
    If @GUI_WinHandle = $TestConsoleForm. Then
        ;MsgBox(0, "Exiting", "Exiting...",1)
        ;ExitOpt("GUIOnEventMode", 1)
        Exit
    EndIf
EndFunc   ;==>TestConsoleFormClose

Func iSelectDataFileChange()

    $Test_Data_File = _GUICtrlEdit_GetText($iSelectDataFile)
    Return $Test_Data_File
EndFunc   ;==>iSelectDataFileChange

Func SelectDataFileClick()

EndFunc   ;==>SelectDataFileClick

Func TestConsoleFormMaximize()

EndFunc   ;==>TestConsoleFormMaximize
Func TestConsoleFormMinimize()

EndFunc   ;==>TestConsoleFormMinimize
Func TestConsoleFormRestore()

EndFunc   ;==>TestConsoleFormRestore


Func RepPlayStopButton()
    Run($Test_Scripts_Path & "RepeatPlayStop.exe")
EndFunc   ;==>RepPlayStopButton



TAG:

 

评分:0

我来说两句

Open Toolbar