MILY: 宋體; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial; mso-font-kerning: 0pt">這段時間有空學習了QTP,學習過程中遇到了一個問題,就是把鏈接的內容參數化。.
需求:用戶管理模塊,創建多個組織,并在其組織下創建用戶(組織以樹形顯示,要在組織樹中點擊這個組織,才能添加用戶)。設計一個腳本,自動化測試(回歸測試)(檢查點等等的設置在此略,本次重點講參數化)
分析需求:首先,從需求來看有兩個功能點要測試,一是組織創建,第二用戶創建。 并且兩者之間有制約,要在組織下創建用戶。
設計腳本:首先我們可以最先想到的是,錄制兩個腳本,一個是創建組織,一個是在已創建的組織下創建用戶,分別在兩個腳本中,對組織名、用戶名參數化。。。
但根據以上所說的測試情況,不能完全實現自動化,仍需要手工來修改腳本。為什么要這樣說呢:
1. 首先,錄制一個創建組織的腳本,可以設置組織名稱參數化;
2. 在創建用戶的腳本中,我們要選擇已創建的組織,再創建用戶(這就是制約之處,組織是動態的;如果是靜態的,就只能實現在一個組織下創建用戶了。測試用例重復,無實際意義。);
3. 我們要在創建用戶的腳本中,手工將已創建的組織添加到參數化表中。
這樣的腳本從執行效率上來看,還不如手工來的快。
所以我設想用一個腳本來實現,這就有一個問題,組織的參數化,保存組織時參數化實現沒問題,但要點擊這個組織名稱(即鏈接對象)的參數化對我這個新手來說不容易。
錄制腳本如下:
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_username").Set "admin"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").SetSecure "11"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").Submit
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("組織和用戶管理").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_2").Link("子部門列表").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_3").WebButton("新建").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebEdit("group.name").Set "北京公司" //創建組織
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebButton("保存").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click //點擊組織名
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_4").WebButton("新建").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebEdit("user.loginname").Set "李四" //創建用戶
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebButton("保存").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Sync
Browser("歡迎您登錄Xxxx").Close
從腳本來看,我們要把組織名稱“北京公司”參數化,新建時沒問題,但Link("北京公司")怎么參數化呢?在,網上找了資料,要用SetTOProperty來修改對象的值,但要用循環,創建用戶部分的腳本如下:
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_username").Set "admin"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").SetSecure "11"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").Submit
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("組織和用戶管理").Click
Dim i,b
For i=1 To 2
Select Case i
Case 1 b="上海公司"
Case 2 b="天津公司"
End Select
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").SetTOProperty "Text",b
//添加此行,用SetTOProperty來修改Link內容的值,此處引用了變量b的值
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click
Next
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Sync
Browser("歡迎您登錄Xxxx").Close
雖然這樣也可以實現向多個組織下創建用戶,但組織名也是提前手工添加到腳本中去的,另外多個組織下創建多個用戶時,循環也會有問題。
我打算不用循環了,我就觀注SetTOProperty,我想我直接用它來引用組織名參數化表中的數據。經過多次試驗,終于成功。
完整版腳本如下:
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_username").Set "admin"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").SetSecure "48fe9e6c134bc16748107d69ac01"
Browser("歡迎您登錄Xxxx").Page("歡迎您登錄Xxxx").WebEdit("j_password").Submit
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("topFrame").WebTable("系統管理").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("tree").Link("用戶管理").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("tree_2").Link("組織和用戶管理").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_2").Link("子部門列表").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_3").WebButton("新建").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebEdit("group.name").Set DataTable("bumen", dtGlobalSheet) //對組織參數化,存在表“bumen”中
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_3").WebButton("保存").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").SetTOProperty "text",DataTable("bumen", dtGlobalSheet) //用SetTOProperty引用表“bumen”中的數據, "text"是對象中的屬性,其后的內容是屬性的值,現在我們把屬性的值參數化了,也不用創建變量了。
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmLeft").Link("北京公司").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("frmRight_4").WebButton("新建").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebEdit("user.loginname").Set DataTable("user", dtGlobalSheet)
//用戶參數化
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Frame("x_open_frame_4").WebButton("保存").Click
Browser("歡迎您登錄Xxxx").Page("Xxxx 1.0").Sync
Browser("歡迎您登錄Xxxx").Close
這樣就可以實現,創建一個組織,并可在其下創建一個用戶。實現了需求。在組織名稱和用戶名稱的參數列表中添加多行數據,就可實現創建多個組織,并可分別在其下創建用戶了。