測試 第二期雜志中的“關于 SQA GetProperty的使用”一文,對其中的一個問題產生了興趣。文中提到,SQAGetProperty只能得到Object Property,無法得到Odject" name="description" />
首先建立一個工程shiyan,工程位于F:\Rational\project目錄下。然后新建一個Script,名為111。以51testing的首頁作為被測對象。選擇插入Odject Data驗證點,驗證點的Name為Odject Data,Wait state根據情況設置,Expected result選擇Pass。確定后選擇Odject:HTMLDocument,HTMLTitle=51Testing軟件測試網:軟件測試的專業網站。然后在data test中選擇Contents,再使用缺省設置確定后完成驗證點的添加。這時在目錄F:\Rational\project\shiyan\TestDatastore\DefaultTestScriptDatastore\TMS_Scripts\vp下就會產生一個基線文件111.Object Data.base.grd,文件的內容即是插入驗證點時所選Object的Contents。這時要作2處小小的修改:首先,需要修改一下該基線文件的內容,使其內容在實際運行中永遠不會出現,即讓該驗證點永遠不會通過,這樣回放時才會生成保存實際Contents的grd文件,可以直接打開基線文件修改或在Robot的Asset pane中雙擊驗證點以打開Grid Comparator,在其中修改基線文件;其次,由于該驗證點是永遠不會通過的,其結果我們并不關心,不需要出現在log中,否則反而影響我們觀察log,因此,需要將其從log中去掉。這個只需要在腳本中驗證點之前加入SQASuspendLogOutput即可,該驗證點的結果便不會寫入log中,然后再在驗證點之后加上SQAResumeLogOutput以恢復輸出log。完成以上工作后,回放該腳本時,當執行完驗證點后,在F:\Rational\project\shiyan\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\111.Log\vp目錄下會生成兩個grd文件,其中一個名為111.Object Data.exp.grd,保存Contents的預期值;另一個名為111.Object Data.act????.grd(?代表一 個字母或數字,該文件的文件名每次運行腳本時都會不同,“act”后有隨機的4位字母或數字),保存Contents的實際值。這樣,在腳本中驗證點后打開文件111.Object Data.act????.grd,即可讀取想要的Contents值,以控制腳本行為。由于文件名中有4個隨機字符,因此無法使用確切的Path來打開文件,在這里可以使用API函數FindFirstFile(具體用法參見MSDN),該函數可以在參數Path中使用通配符,即用“F:\Rational\project\shiyan\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\111.Log\vp\111.Object Data.act*.grd”作為Path,該函數會在VP目錄下搜索符合條件的文件,當找到第一個符合條件的文件后(由于VP目錄下只有一個這樣的文件,因此可用此函數),打開該文件并返回該文件的句柄,并將該文件的一些信息保存到一個結構體中。得到文件句柄后,可以用API函數ReadFile讀取文件中的內容。當使用完該文件后,再用API函數FindClose關閉所打開的文件。至此,我們就完成了對“Odject:HTMLDocument,HTMLTitle=51Testing軟件測試網:軟件測試的專業網站”的Contents的獲取。
版權聲明:51testing軟件測試網及相關內容提供者擁有ltesting.net內容的全部版權,未經明確的書面許可,任何人或單位不得對本網站內容復制、轉載或進行鏡像。51testing軟件測試網歡迎與業內同行進行有益的合作和交流,如果有任何有關內容方面的合作事宜,請聯系我們。
原文轉自:http://www.anti-gravitydesign.com