if len(ieServers) > 0:
ieServer = ieServers[0]
msg = win32gui.RegisterWindowMessage('WM_HTML_GETOBJECT')
ret, result = win32gui.SendMessageTimeout(ieServer, msg, 0, 0, win32con.SMTO_ABORTIFHUNG, 1000)
ob = pythoncom.ObjectFromLresult(result, pythoncom.IID_IDispatch, 0)
doc = win32com.client.dynamic.Dispatch(ob)
print doc.url
doc.all['id'].click()
#pythoncom.CoUninitialize()
多線程操作
IHTMLDocument2是線程安全的,默認情況下不能在多線程中使用,否則會拋異常。但是在具體使用過程中,又必須使用多線程。解決辦法就是上面的代碼中的:
# Important for multithreading
sys.coinit_flags = 0 # pythoncom.COINIT_MULTITHREADED
這句必須在開頭的時候設定,同時,不要再顯示調用pythoncom.CoInitializeEx(0)和 pythoncom.CoUninitialize()。
參考:http://bytes.com/topic/python/answers/26897-multithreaded-com-server-problem
IHTMLDocument2 接口
IHTMLDocument2接口有哪些方法,可以查詢http://msdn.microsoft.com/en-us/library/aa752574%28VS.85%29.aspx
基本能夠滿足自動化測試的需要,可以在此基礎上封裝出更易使用的自動化UI測試框架。
文章來源于領測軟件測試網 http://www.kjueaiud.com/