qtp 問題彙總(不斷更新)<…
阿新 • • 發佈:2019-01-28
一、Cannot find the
"shoujian.projectname" object's parent "10_2" (class Frame). Verify
that parent properties match an object currently displayed in your
application.問題的解決。
這個問題真是鬱悶,其實產生的主要原因是:在錄製指令碼的時候,qtp沒有識別出來框架Frame中的物件,回放時找不到物件出錯。
解決辦法:通過object spy 識別物件 並將其新增到物件庫;然後在錄製點選物件的一段指令碼(或者自己寫),再次回放就ok了。
二、 注意:datatable.Importsheet
"D:testUSER_INFO.xls",1,"Action1"
中,"Action1"一定要加雙引號,要不然預設匯入到Global中。
三、自動啟動qtp的vbscript指令碼。
dim qtapp
Set qtapp=createobject("QuickTest.application")
qtapp.Launch
qtapp.visible=true
用法:將指令碼解除安裝記事本檔案中,檔案格式儲存為.vbs 點選直接執行。就可以自動啟動qtp。
四、描述性程式設計中出現“The “[WinEdit]”object's description ,matches more than one of the objects currently displayed in your appliction.Add addtional properties to the objects ddescription in order to uniquely identify the object. ”中問題的解決。
這個問題看起來其實很簡單就是在QTP描述過程中,發現匹配該物件的屬性多於1個,因此無法正確匹配,所以QTP報錯。錯誤如圖下:
問題解決方法:
新增更多的物件屬性,以便正確匹配,在物件檢視器點選該物件(我的是password物件),點選,檢視物件的屬性,新增更多的屬性,如:window id 等。同時將指令碼修改為:
Dialog("Login").WinEdit("attached text:=Password:","window id:=3001").Set "cheers_lee"
注意紅色字型部分,我是同個兩個屬性匹配WinEdit的,一個是attached text另一個是window id。再次執行指令碼,測試通過OK!強調的是 attached
text和window id 是物件的屬性,通過物件檢視器可以看到。
在QTP裡面 ,選擇Tools --> Object Identification...Environment選擇Web,找到 WebCheckBox,看看 QTP預設的識別WebCheckBox 物件時使用的是哪些屬性。可以修改識別WebCheckBox物件的屬性。
注意: 修改只對以後錄製的指令碼起作用。
cur_replay_type = Setting.WebPackage("ReplayType")
Setting.WebPackage("ReplayType") = 2
Browser("Browser").Page("Welcome: Mercury Tours").WebEdit("userName").Click 5,4, micRightBtn
Setting.WebPackage("ReplayType") = cur_replay_type
index=4
Set WshShell = CreateObject("Wscrīpt.Shell")
For i = 1 To index
WshShell.sendKeys "{DOWN}"
Next
WshShell.sendKeys "{ENTER}"
Set WshShell = nothing
都選擇第二項.就OK了.
str="DRIVER=Oracle in OraHome92;SERVER=192.168.0.1;DBQ=testdb;user id=test; password=test"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
sql = "select * from user_table t where table_name = 'XXX' "
Rs.open sql,conn',1,3
' Get the object
set iStyle= obj.currentstyle
' Get the attribute
sColor = iStyle.color
回放時會出現 object not visible ;
windows("記事本").click 193,117
windows("記事本").winmenu("ContextMenu").Select "檔案:退出"
QTP預設錄製方式是無法錄製下拉選單的,必須修改設定後再錄製
修改設定如下:
在tools -> web event recording configuration 點選custom settings... 展開Web objects,
選種webelement,點選event -> add -> onmouseover 。並確定在record欄內,狀態是enabled。
然後再重新錄製你的指令碼。
執行錄製後的指令碼,無法回放成功,這是因為指令碼只錄制了滑鼠的onmouseover 事件,卻沒有錄製click事
件,所以指令碼錄製完後要手動新增click事件。
特殊字元都需要用轉義字元""來進行轉義。
WshShell.Popup "123456789", 2, "標題內容"
Function Load_Addins(testPath)
Dim qtApp 'As QuickTest.Application
Dim blnNeedChangeAddins
Dim arrTestAddins
Set qtApp = CreateObject("QuickTest.Application")
arrTestAddins = qtApp.GetAssociatedAddinsForTest(testPath)
blnNeedChangeAddins = False
For Each testAddin In arrTestAddins
If qtApp.Addins(testAddin).Status <> "Active" Then
blnNeedChangeAddins = True
Exit For
End If
Next
If qtApp.Launched And blnNeedChangeAddins Then
qtApp.Quit
End If
If blnNeedChangeAddins Then
Dim blnActivateOK
blnActivateOK = qtApp.SetActiveAddins(arrTestAddins, errorDescrīption)
If Not blnActivateOK Then
Call ErrorLog(errorDescrīption) '這裡是呼叫自己的日誌函式,可替換為自己的或註釋掉
Wscrīpt.Quit
End If
End If
If Not qtApp.Launched Then
qtApp.Launch
End If
qtApp.Visible = True
qtApp.Open testPath
'可在此加入qtApp.Test.Run來執行Test
Set qtApp = Nothing
End Function
這個問題真是鬱悶,其實產生的主要原因是:在錄製指令碼的時候,qtp沒有識別出來框架Frame中的物件,回放時找不到物件出錯。
解決辦法:通過object spy 識別物件 並將其新增到物件庫;然後在錄製點選物件的一段指令碼(或者自己寫),再次回放就ok了。
二、
三、自動啟動qtp的vbscript指令碼。
dim qtapp
Set qtapp=createobject("QuickTest.application")
qtapp.Launch
qtapp.visible=true
用法:將指令碼解除安裝記事本檔案中,檔案格式儲存為.vbs 點選直接執行。就可以自動啟動qtp。
四、描述性程式設計中出現“The “[WinEdit]”object's description ,matches more than one of the objects currently displayed in your appliction.Add addtional properties to the objects ddescription in order to uniquely identify the object.
這個問題看起來其實很簡單就是在QTP描述過程中,發現匹配該物件的屬性多於1個,因此無法正確匹配,所以QTP報錯。錯誤如圖下:
問題解決方法:
新增更多的物件屬性,以便正確匹配,在物件檢視器點選該物件(我的是password物件),點選,檢視物件的屬性,新增更多的屬性,如:window id 等。同時將指令碼修改為:
Dialog("Login").WinEdit("attached text:=Password:","window id:=3001").Set "cheers_lee"
注意紅色字型部分,我是同個兩個屬性匹配WinEdit的,一個是attached text另一個是window id。再次執行指令碼,測試通過OK!強調的是
五、修改QTP中物件的預設識別屬性
以WebCheckBox為例。在QTP裡面 ,選擇Tools --> Object Identification...Environment選擇Web,找到 WebCheckBox,看看 QTP預設的識別WebCheckBox 物件時使用的是哪些屬性。可以修改識別WebCheckBox物件的屬性。
注意: 修改只對以後錄製的指令碼起作用。
六、QTP如何測試滑鼠右鍵選單
以QTP附帶的訂票網站sample為例,edit控制元件username滑鼠右鍵,點選paste(第4個選單項)cur_replay_type = Setting.WebPackage("ReplayType")
Setting.WebPackage("ReplayType") = 2
Browser("Browser").Page("Welcome: Mercury Tours").WebEdit("userName").Click 5,4, micRightBtn
Setting.WebPackage("ReplayType") = cur_replay_type
index=4
Set WshShell = CreateObject("Wscrīpt.Shell")
For i = 1 To index
WshShell.sendKeys "{DOWN}"
Next
WshShell.sendKeys "{ENTER}"
Set WshShell = nothing
七、如何設定讓物件庫不產生重複物件
tools --options---web ---page/frame optinons都選擇第二項.就OK了.
八、QTP中用程式碼連線資料庫
Set Conn = CreateObject("ADODB.Connection" )str="DRIVER=Oracle in OraHome92;SERVER=192.168.0.1;DBQ=testdb;user id=test; password=test"
Conn.open str
Set Rs = CreateObject ("ADODB.Recordset" )
sql = "select * from user_table t where table_name = 'XXX' "
Rs.open sql,conn',1,3
九、QTP測試頁面字型顏色的辦法
set ōbj = Browser().Page().WebElement().Object' Get the object
set iStyle= obj.currentstyle
' Get the attribute
sColor = iStyle.color
十、下拉選單不能回放的解決方法
在錄製時,比如開啟記事本,點選下拉選單 "檔案"-->"退出";回放時會出現 object not visible ;
windows("記事本").click 193,117
windows("記事本").winmenu("ContextMenu").Select "檔案:退出"
QTP預設錄製方式是無法錄製下拉選單的,必須修改設定後再錄製
修改設定如下:
在tools -> web event recording configuration 點選custom settings... 展開Web objects,
選種webelement,點選event -> add -> onmouseover 。並確定在record欄內,狀態是enabled。
然後再重新錄製你的指令碼。
執行錄製後的指令碼,無法回放成功,這是因為指令碼只錄制了滑鼠的onmouseover 事件,卻沒有錄製click事
件,所以指令碼錄製完後要手動新增click事件。
十一、QTP中如何識別帶引數的連結?
QTP中如何識別帶引數的連結?比如:"Browser("browser").Page("page").Link("href:=http://www.xxx.test/file/upload.php?matchable=0"特殊字元都需要用轉義字元""來進行轉義。
十二、如何讓QTP執行時自動產生提示資訊並自動確定?
Set WshShell = CreateObject("Wscrīpt.Shell")WshShell.Popup "123456789", 2, "標題內容"
十三、QTP回放的過程中出現禁止執行控制元件提示的解決方法
修改QTP設定如下:toos-->options..-->Active Screen-->Advanced-->點選Load ActiveX controls十四、從QC自動啟動qtp如何自動載入外掛
'此函式用於載入指定Test所有的外掛,若要執行Test可自己加個qtApp.Test.RunFunction Load_Addins(testPath)
Dim qtApp 'As QuickTest.Application
Dim blnNeedChangeAddins
Dim arrTestAddins
Set qtApp = CreateObject("QuickTest.Application")
arrTestAddins = qtApp.GetAssociatedAddinsForTest(testPath)
blnNeedChangeAddins = False
For Each testAddin In arrTestAddins
If qtApp.Addins(testAddin).Status <> "Active" Then
blnNeedChangeAddins = True
Exit For
End If
Next
If qtApp.Launched And blnNeedChangeAddins Then
qtApp.Quit
End If
If blnNeedChangeAddins Then
Dim blnActivateOK
blnActivateOK = qtApp.SetActiveAddins(arrTestAddins, errorDescrīption)
If Not blnActivateOK Then
Call ErrorLog(errorDescrīption) '這裡是呼叫自己的日誌函式,可替換為自己的或註釋掉
Wscrīpt.Quit
End If
End If
If Not qtApp.Launched Then
qtApp.Launch
End If
qtApp.Visible = True
qtApp.Open testPath
'可在此加入qtApp.Test.Run來執行Test
Set qtApp = Nothing
End Function