之前說過旺旺內嵌ie取得聊天記錄的方法一,但是在實際試驗中這種方法不穩定,因為有些機器上無法 辨識到該控制項是page(原因未明,可能和ie版本或其他環境因素有關係)。
但是在客戶端效能測試中需要了解載入聊天記錄的時間,之前用過粗略的方法qtp自帶的方法getvisibletext,結果在測試過程中發現有時候肉眼都已經看見聊天記錄了,但是
指令碼還是停留在getvisibletext的語句行。所以必然是在獲取內容上花了很多時間。而且該方法取值只能取得介面上看得見的聊天記錄。那怎麼才能取得完整的聊天記錄而花費
較少的時間呢。之前看過曾一訊演示的產品中可以抓取聊天記錄,於是就像或者可以借取它的**封裝成乙個dll來使用。順著這個思路我開始了具體的工作。
首先,了解一訊的**發現是用ihtmldocument2 這個東東,將測試物件的控制代碼傳入轉化成ihtmldocument2介面,就可以對這個介面做一些事情了,因為這個介面提供了較豐
富的方法。借取**c#如下:
public string findwwie(int iihwdl)
return sb1.tostring();
}很簡單吧,這裡做了點小小的處理如讓傳入的為int物件;這樣和qtp就無縫結合了,在這過程中還用sky++驗證了一下,結果犯了個小錯誤sky++用的是16進製制,而c#用的
是十進位制,當然qtp中就沒有這樣的問題了。
當然在編寫上述**的時候需要引入microsoft.mshtml.dll。那麼就有後面的問題了。當我在測試環境(10.1.151.32)中除錯通過的時候,我就把他換到實際的開發環境中
測試。結果報microsoft.mshtml.dll沒有找到,怎麼辦呢。當然是註冊microsoft.mshtml.dll了,那麼如何註冊.net dll呢。網上說用regasm.exe,
命令 regasm microsoft.mshtml.dll
於是我用了,結果沒有效果。還報錯,怎麼辦呢
開啟assembly,直接把dll拖進去。搞定了,至於原因沒有時間考究。反正不是解決問題的重點。
接下來,我要驗證一下這種方法和原來getvisibletext哪個耗費的時間短點。具體看**吧:
set obj1 = dotnetfactory.createinstance("taijidata.commonfunc","c:/taijidata.dll")
set obj3 = dotnetfactory.createinstance("qtphelp.iehelp","c:/qtphelp.dll")
for i = 0 to 5
thedate1 = obj1.getnow
obj3.findwwie(window("cctv19790318").winobject("internet explorer_server").getroproperty("hwnd"))
'window("cctv19790318").winobject("internet explorer_server").getvisibletext
thedate2 = obj1.getnow
print cstr(thedate2 - thedate1)
next
結果證明我的猜想,用getvisibletext用時大概1100毫秒
用新的方法用時100毫秒
順便記錄一下,在測試過程中還知道了getroproperty和gettoproperty的區別(大家自己看幫助吧,沒有那麼便宜的事情)。
解決QTP啟動後,無法開啟IE的錯誤
問題的起因 最近單位電腦頻頻中毒,所以不管是客戶機還是伺服器都裝上了防毒軟體,而且補丁也全部進行了公升級。第二天就發現使用 qtp 執行指令碼後,無法開啟ie,總是報問題錯誤。解決歷程 1 解除安裝外掛程式,開啟ie的管理載入項,禁用除bho manaerclass以外的 其他 外掛程式,問題依舊。...
WinForm窗體設計器錯誤解決方法
看上面的錯誤資訊就知道其實在設計器時程式已經執行了拖進窗體的控制項的建構函式和load事件等。看網上好多資料都說是designmode屬性的問題,試了下,感覺不行的。下面新建個使用者控制項,在建構函式裡面處理看看是否是designmode 生成專案,vs工具箱出現使用者控制項testcontrol ...
ie下跳轉不帶referer的解決方法
用js進行跳轉,在ie下不能記錄referer,但在ff下是可以的。經過嘗試,終於找到好的方法解決了。呵呵!最好的解決方法 嘗試的過程 結果 仍不帶referer 2.結果 帶referer。但跳過去後,會多個問號。4.id ss href 結果 帶referer。但ff不支援click。5.id ...