在做web
測試時,頁面上的html標籤會包含各類事件:單擊(onclick)、雙擊(ondblclick)、游標聚集(onblur)、onchange、onfocus、onmousedown、onmouseup、onmouseover、onmouseout、onsubmit、onreset、onpropertychange等。
在用qtp錄製時,有可能會有一些事件錄製不到。這時候你可以進行一些設定,qtp/tools/web event recording configuration/custom settings/event/add就可以新增你想要錄製下來的事件啦。
當然,這篇文章的主題並不是上述這些。
先描述一下我的問題,專案中碰到乙個列表控制項,是採用ligerui做的,雙擊列表中的一行,會讀到這一行的內容,然後把資料賦給頁面的其他標籤,還包括一些隱藏域。
首先,我在錄製的時候發現雙擊事件錄不到(上述web event recording configuration已經設定好),於是採用低級別錄製,雙擊事件順利錄製到。
接著,在回放的時候,發現雙擊事件失效,並沒有如預期中的,我雙擊乙個項,然後頁面別的元素獲取到他的值。
我的第乙個操作是,因為知道整個頁面實現的邏輯是,獲取到每一項的唯一標誌符後,把這個值賦給頁面的乙個隱藏域,然後後續的工作就都可以順利進行了。因為這裡涉及到隱藏域的問題,我們知道qtp採用的是物件識別的模式,意識就是,他只能識別他看的到的,在表面上顯示出來的物件。這裡採用dom物件的方法,dom是直接從源**(html頁面)獲取物件。所以頁面上的各種隱藏域,各種可以通過標籤、id、屬性等獲取到的物件就可以很順利的在qtp中讀取到。dom物件也很簡單,只需要在你想要識別的物件的父物件後面加上「 .object 」,然後就可以通過getelementbyid("id")、document.getelementbyid("id")、getelementsbyname("html tag")等各種js獲取物件的方法來對頁面為所欲為了。
比如這裡,我的實現**就變成了:
1 set obj = browser("browser").page("page").object.getelementbyid("verifyid")
2 obj.value = "0101002699"
這個只是很膚淺的解決了問題,但頁面上該顯示正確值的地方的值還是空的。那就是說還得弄乙個能真正解決該問題的方法。
現在我們就引入了fireevent方法。
fireevent是js中的乙個方法,以下摘自msdn的解釋
fireevent執行的效果就是「等同於」在目標元素上進行了相關操作。可以模擬各種包括單擊在內的,文章一開頭就列出來的各種操作。
那我上面遇到的問題的解決辦法就是:
set list = browser("browser").page("page").webelement("list").object
list.document.getelementbyid("maingrid4|2|r1001").fireevent("ondblclick")
這樣,我想要的雙擊事件的回放問題,就順利解決啦。
QTP模擬滑鼠和鍵盤事件整理
1 滑鼠事件 1.1 使用自帶的click方法 看qtp的幫助,每個物件都有自帶的click方法,通過其中第三個引數指定具體的滑鼠事件 例如 browser new page page new page webelement html tag form click 0,0,micrightbtn 注...
QTP模擬滑鼠和鍵盤事件方法整理
1 滑鼠事件 1.1 使用自帶的click方法 看qtp的幫助,每個物件都有自帶的click方法,通過其中第三個引數指定具體的滑鼠事件 例如 browser new page page new page webelement html tag form click 0,0,micrightbtn 注...
如何用QTP錄製滑鼠右鍵點選事件
qtp錄製滑鼠右鍵單擊事件要通過模擬鍵盤操作來實現 step 1,修改replaytype為2,一般情況預設設定是1的。1 使用瀏覽器事件執行滑鼠操作。2 使用滑鼠執行滑鼠操作 setting.webpackage replaytype 2 step 2,滑鼠右鍵單擊事件 附 click的事件有三種...