freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

自動化測試工具論文visualcnet—畢業(yè)設計論文(已改無錯字)

2023-01-15 15:19:34 本頁面
  

【正文】 ok)。 hKeybdHook=NULL。 KeybdHookState=FALSE。 //卸載鍵盤鉤子函數(shù) InvalidateRect(hWindowHandle,NULL,TRUE)。 UpdateWindow(hWindowHandle)。 } 需要指出的是項目 RecordScript 中的函數(shù)并不能直接被項目 TheTree 所使用,編蘇州大學本科生畢業(yè)設計(論文) 26 寫 的目的正是為了更方便的使用這些函數(shù)。 ifndef _RECORDSCRIPT_H_ define _RECORDSCRIPT_H_ include //DLL 入口函數(shù) void InstallMouseHook(HWND hwndMainWindow)。 void UninstallMouseHook()。 //函數(shù)定義 typedef void(*INST)(HWND hwndMainWindow)。 typedef void(*UNST)()。 class CMouseHookDllCtrl { public: CMouseHookDllCtrl(const char* pDllFileName): m_hDll(NULL),m_pfnInst(NULL),m_pfnUnst(NULL) { m_hDll=LoadLibrary(pDllFileName)。 //安裝鉤子函數(shù) if(m_hDll!=NULL) { m_pfnInst=(INST)GetProcAddress(m_hDll, InstallMouseHook)。 //獲取鼠標鉤子函數(shù) m_pfnUnst=(UNST)GetProcAddress(m_hDll, UninstallMouseHook)。 //獲取鍵盤鉤子函數(shù) } else { MessageBox(NULL,Cannot load the hook dll!, Error,MB_OK)。 } } ~CMouseHookDllCtrl() 蘇州大學本科生畢業(yè)設計(論文) 27 { if(m_hDll!=NULL) { FreeLibrary(m_hDll)。 //卸載鉤子函數(shù) m_hDll=NULL。 } } INST m_pfnInst。 UNST m_pfnUnst。 private: HMODULE m_hDll。 }。 endif 獲取鼠標點擊的窗口的窗口信息 查 找鼠標點擊的窗口的原理是:首先通過遍歷窗口找出鼠標點擊的位置被哪些窗口所包含,然后從中找出尺寸最小的窗口。 BOOL CALLBACK mygetwindow(HWND hwnd,LPARAM lParam) { if(IsWindowVisible(hwnd)) { GetWindowText(hwnd,chrObjectText,256)。 //獲取窗口標題 GetClassName(hwnd,chrObjectClassName,256)。 //獲取窗口類 RECT rWindowRect。 GetWindowRect(hwnd,amp。rWindowRect)。 //保存編輯窗口所屬的窗口標題 if(strcmp(chrObjectClassName,Button)==0 ||strcmp(chrObjectClassName,Static)==0) { strcpy(chParentWindowText,chrObjectText)。 蘇州大學本科生畢業(yè)設計(論文) 28 strcpy(chParentWindowClassName,chrObjectClassName)。 } //保存關(guān)聯(lián)窗口的窗口標題和窗口類 if( amp。amp。 amp。amp。 amp。amp。) { if( amp。amp。) { =。 =。 =hwnd。 strcpy(,chParentWindowText)。 strcpy(, chParentWindowClassName)。 //保存鼠標點擊的窗口的窗口標題和窗口類 =。 =。 //保存 鼠標點擊位置的相對坐標 } } } return true。 } 生成測試腳本 打開 D 盤 根目錄下名為“ ”的臨時腳本文件,如果該臨時腳本文件已經(jīng)存在,則把文件指針移到末尾;如果該臨時腳本文件不存在,則創(chuàng)建一個新的腳本文件。然后蘇州大學本科生畢業(yè)設計(論文) 29 讀取類 AutoFind 的實例對象 record 的如下成 員變量:目標窗口的父窗口類名、目標窗口的父窗口標題 )、目標窗口類名 、目標窗口標題 、窗口事件 、窗口事件內(nèi)容 或,并根據(jù)腳本格式按順序連接起來。當腳本錄制完畢時,將臨時腳本文件的內(nèi)容寫入用戶指定腳本文件名的腳本文件中,并刪除臨時腳本文件 。 腳本管理模塊 當用戶打開測試腳本 時 ,本自動化測試工具會讀取腳本內(nèi)容,并以樹型結(jié)構(gòu)顯示腳本內(nèi)容。 腳本技術(shù) 測試腳本是測試自動化中必要的組成部分,采用手 動編寫或自動 錄制腳本,每個測試用例產(chǎn)生一個腳本。腳本實際上是一種計算機程序的形式,一組測試工具執(zhí)行的指令集合。編輯或編寫腳本可以減少自動化一組測試用例的腳本編寫量。一旦編寫了合理而全面腳本集合,增加新的測試用例時就可以不用編寫腳本,因此,上千個測試用例可以用上百個腳本來實現(xiàn)。測試工具腳本中可以包含的數(shù)據(jù)和指令包括 : 1. 窗口信息 。 2. 控件信息 。 3. 捕獲何種屏幕數(shù)據(jù)及存儲在何處 。 一些腳本技術(shù)需要精心構(gòu)造。而一些腳本技術(shù)相對簡單點。如果腳本只用于大量生命周期較長的不同測試復用,則應該保證該腳本的合理性和維護性。如果腳本只用于一個測試用例,測試完成后就廢棄,建立腳本時就不必花費太大工夫。 要 使腳本易于使用和易于維護 , 應該遵循 如下 原則: 1. 功能 : 執(zhí)行單個任務且可以重用。 2. 結(jié)構(gòu) : 應易讀、易理解和易維護。 3. 文檔 : 有助于復用和維護。 蘇州大學本科生畢業(yè)設計(論文) 30 腳本結(jié)構(gòu) 參照 Rational Robot 和 QuickTest Professional 的腳本格式, 并做出必要的修改 。窗口 信息和控件信息之間用 “ |” 間隔,控件與操作之間用 “ :” 間隔。如下例: 1|Window(編輯水印 )|Button(添加 (amp。D)):Click(3,3) 2|Window(編輯水印 )|Edit(名稱 (amp。N):):Input(1x) 3|Window(編輯水印 )|Button(確定 ):Click(3,3) 所執(zhí)行的操作是在 “ 編輯水印 ” 窗口,單擊 “ 添加 (amp。D)” 按鈕, 然后 在 “ 名稱 (amp。N):”文本框中輸入 “ 1x” , 最后 單擊 “ 確定 ” 按鈕。 圖 43 是生成的一個腳本 示 例 : 圖 43 自動化測試 工具的 腳本 示 例 對象交互模塊 當用戶回放腳本時,首先由腳本模塊負責讀取腳本信息,并保存在類 AutoFind 的實例對象 window 中,然后由對象交互模塊負責根據(jù)所讀取的腳本信息模擬鼠標和鍵盤進行相應的操作。 蘇州大學本科生畢業(yè)設計(論文) 31 用于保存腳本信息的類 AutoFind class AutoFind { public: char chWindowClassName[256], //目標窗口的父窗口類型 chObjectClassName[256], //目標窗口類名 chWindowText[256], //目標窗口的父窗口標題 chObjectText[256], //目標窗口標題 chParentWindowText[256], //關(guān)聯(lián)窗口標題 chParentWindowClassName[256], //關(guān)聯(lián)窗口類名 chWindowEvent[256], //窗口事件 chInputText[256]。 //輸入文本 int iRowNum。 //腳本行號 HWND hWindowHandle, //目標窗口的父窗口句柄 hObjectHandle。 //目標窗口句柄 BOOL bIsObjectExistent, //判斷目標窗口是否存在 bIsObjectVisible, //判斷目標窗口是否可見 bIsObjectEnable, //判斷目標窗口是否可操作 bIsOperationOK。 //判斷目標窗口操作是否成功 POINT pCursorPos。 //鼠標點擊位置坐標 }。 通常,某些窗口類為 “Static”、 “Button”的窗口會存在一個或多個窗口類為 “Edit”、“ComboBox” 等類型的與之相關(guān)聯(lián)的窗口,因此類 AutoFind 成 員變 量chParentWindowClassName和 chParentWindowClassName 就是用來保存這些關(guān)聯(lián)窗口的窗口標題和窗口類。 查找定位對象 在用戶回放腳本時腳本模塊已將所讀取的腳本信息全都保存在類 AutoFind 的實例對象 window 中,所以在查找定位對象時只需要直接使用對象 window 中的相關(guān)變量就可蘇州大學本科生畢業(yè)設計(論文) 32 以了。 在查找定位對象時要分成兩步進行,第一步是查找目標窗口的父窗口,由函數(shù)FindWindow 來實現(xiàn)該功能。 void FindWindow() { hWnd=FindWindow(NULL,)。 //查找目標窗口 的父窗口, ShowWindow(hWnd,SW_SHOWNORMAL)。 //并將其激活 BringWindowToTop(hWnd)。 char PS[256]=Cannot find the window 。 if(hWnd==NULL) //如果未找到目標窗口 { //的父窗口則彈出相應 strcat(PS,)。 //的錯誤提示信息 MessageBox(hWnd,PS,Error,MB_OK)。 =false。 } else { BringWindowToTop(hWnd)。 hWnd=GetForegroundWindow()。 char chCurrentWindowText[256]。 GetWindowText(hWnd,chCurrentWindowText,256)。 if(strcmp(,chCurrentWindowText)!=0) =false。 //判斷當前窗口的窗口標題是否與腳本中所寫的相一致 else { =false。 //操作對象結(jié)果 =false。 //初始化 =false。 =false。 EnumChildWindows(hWnd,myfindwindow,NULL)。 //遍歷窗口 蘇州大學本科生畢業(yè)設計(論文) 33 if(==false) //如果未找到目標 { //窗口則彈出相應 strcat(PS,)。 //的錯誤提示信息 MessageBox(hWnd,PS,Error,MB_OK)。 } WindowEvent()。 //調(diào)用操作對象函數(shù) } } WriteLog()。 //調(diào)用日志模塊 } 第二步是查找目標窗口,就是通過遍歷窗口找到與腳本內(nèi)所寫的目標窗口的窗口類和窗口標題相一致的窗口,由遍歷窗口函數(shù) EnumChildWindows 的回調(diào)函數(shù)myfindwindow 來實現(xiàn)該功能。 BOOL CALLBACK myfindwindow(HWND hwnd,LPA
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1