qtp中flex控件無法正常錄制的解決說明
問題背景:
v5部分子產品的前台界面裡存在一些擁有點選事件的lable标簽,而由于qtp中flex插件的原因,在qtp進行錄制時,會導緻某些控件在點選時無法進行正常記錄(無法記錄或者錯誤記錄),進而導緻自動化測試中斷或者出錯。
具體問題分析:
1、 錄制時出現錯誤腳本的情況:
browser("xxxx.raq").sparkapplication("mygrid").flexbox("insertvbox").flexmenubar("mb_insert").show"超連結"
如上截圖所示,在自定義複雜報表中,當點選“超連結”這個lable标簽時,qtp會自動生成如上所述代碼,仔細檢視這段代碼的最後可以發現,它其實執行的不是一個click()事件,而是show()方法,這種情況我們就需要修改腳本,否則會因為此步驟中的點選動作未執行而導緻後續動作失敗。
ps:上述操作的正确腳本應該為:browser("10849.raq").sparkapplication("mygrid").flexbox("insertvbox").flexmenubar("mb_insert").flexlistlabel("超連結").click
2、 無法錄制的情況:
如上截圖所示,當點選頁面上的“百度”這個lable标簽時,産品會彈出“關聯參數設定”這個對話框,但當錄制點選這個操作時,qtp是不會自動生成該句腳本代碼的,相當于這步操作沒有錄制上,同樣,回放時就會出現後續操作失敗的情況。
解決方法:
qtp錄制時如果出現上述情況,就需要手動進行調整了,具體流程為:
1、首先確定不能錄制或者錄制出錯的控件是能夠被對象探測器識别到的。
2、在對象庫裡手動添加不能錄制的對象,其中對象的擷取方式類似于對象探測器的使用方式。
3、根據探測到的對象屬性,書寫腳本代碼。
圖解:
對象探測器的使用:
按圖示操作後,點選頁面上的對應控件即可進行探測
在對象庫裡手動添加對象:
在對應腳本中,按圖示進入對象庫并點選添加對象按鈕,即進入類似于對象探測的界面,選中要添加的控件後預設添加即可
代碼的書寫規則:
以“無法錄制的情況”中的“百度”按鈕為例,先使用探測器識别,得到如圖所示的樹形屬性清單
之後根據該屬性清單進行代碼編寫,
browser("建立報表_zhangsan_15unsaved.raq").
sparkapplication("mygrid").
sparktitlewindow("超連結設定").
sparkskinnablecontainer("linktab").
sparknavigatorcontent("index:3").
flexlabel("百度").click
根據上述代碼不難發現,腳本的編寫,其實就是對探測到的對象屬性按一定規則進行書寫并在最後加上動作方法,而這個規則就是将對象的各屬性用“.”進行連接配接,并将屬性值寫入到對應的(””)中