測試 第二期雜志中的“關于 SQA GetProperty的使用”一文,對其中的一個問題產生了興趣。文中提到,SQAGetProperty只能得到Object Property,無法得到Odject" name="description" />

如何在Robot腳本中使用Object Data

發表于:2007-04-29來源:作者:點擊數: 標簽:腳本何在robotdataobject
看了無憂 java script:;" onClick="javascript:tagshow(event, '%B2%E2%CA%D4');" target="_self"> 測試 第二期雜志中的“關于 SQA GetProperty的使用”一文,對其中的一個問題產生了興趣。文中提到,SQAGetProperty只能得到Object Property,無法得到Odject
看了無憂javascript:;" onClick="javascript:tagshow(event, '%B2%E2%CA%D4');" target="_self">測試第二期雜志中的“關于SQAGetProperty的使用”一文,對其中的一個問題產生了興趣。文中提到,SQAGetProperty只能得到Object Property,無法得到Odject Data(如Contents等),這是完全正確的。但是有沒有什么方法可以得到Odject Data呢?湊巧看到51testing論壇上也有人提了相同的問題,但沒有得到解答,于是就想研究一下,看看能不能找到可行的方法。大家都知道,用Inspector可以獲取Object Property和Odject Data,說明這兩者都是可以被識別的,而Object Property可以使用SQAGetProperty函數在腳本中得到,從而可以很方便的在腳本中通過對Object Property值的判斷來進行腳本行為的控制。那么同樣可以用Inspector獲取的Odject Data,似乎也應該有相應的函數可以在腳本中使用以獲取Odject Data。于是我就在SQABasic language的HELP中仔細查找了一下,但是很不走運,并沒有找到與之相關的函數(可能確實沒有這類函數,也可能是我水平有限,沒找到;如果哪位前輩知道有這類函數的話,希望能指點一下,不勝感激)。那么一點辦法都沒了嗎?那倒也不盡然。畢竟Robot');" target="_self">Robot還是使用到Odject Data的,在驗證點中就專門有一個Odject Data驗證點,既然驗證點有用到,那么我們就一定能找到方法,在腳本中獲取Odject Data,從而能象使用SQAGetProperty那樣控制腳本行為(如果Robot自己都不用到,那就比較麻煩了)。按照這個思路,我就先研究了一下Odject Data驗證點。當在腳本中插入一個Odject Data驗證點時,會生成一個BaseLine File(后綴名grd),用于保存插入驗證點時用作預期結果的Odject Data。當回放腳本時,如果實際的Odject Data與預期的Odject Data一致,在Build目錄下會生成一個grd文件,文件名中含有exp,用于存放預期的Odject Data(因為實際的Odject Data與預期的一致,因此就不保存實際的Odject Data了);如果實際的Odject Data與預期的Odject Data不一致,則除了生成前面所說的文件外,還會生成一個grd文件,文件名中含有act,用于存放回放時實際的Odject Data,而這些grd文件的Path都是符合特定規則的,因此我們完全可以給出保存實際Odject Data的grd文件的Path,從該文件中讀取我們所需要的Odject Data的值。這樣,我們就可以在腳本中通過判斷Odject Data的值來控制腳本行為。另外,還有一點要說明的是,有些Odject的Odject Data不止一種,例如對于HTMLDocument而言,其Odject Data包括Contents,HTML Text,Document URL和Document Title四種,想獲取哪一種的值,就要在插入驗證點時選擇該項,再去讀取相應的grd文件即可。下面結合一個實際的例子,詳細說明一下如何在腳本中讀取Odject Data的值。

    首先建立一個工程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

...

熱門標簽

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97