2011-04-07 125 views
2

正在執行使用WatiN的自動化。使用幾個併發線程來測試應用程序。很少線程失敗並且日誌報告/堆棧跟蹤顯示以下內容。System.InvalidCastException:指定的轉換無效

System.InvalidCastException: Specified cast is not valid. 
    at SHDocVw.IWebBrowser2.get_HWND() 
    at WatiN.Core.Native.InternetExplorer.IEBrowser.get_hWnd() 
    at WatiN.Core.Browser.get_hWnd() 
    at WatiN.Core.DomContainer.StartDialogWatcher() 
    at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess) 
    at WatiN.Core.IE..ctor(Boolean createInNewProcess) 
    at Core.BaseWatinTestWrapper.Run() 

在此之後的異常有被提出,即

System.Runtime.InteropServices.COMException Retrieving the COM class factory for component with CLSID {0002DF01-0000-0000-C000-000000000046} failed due to the following error: 80080005. 

請提供一些幫助其他異常。提前致謝。

+0

自從我們切換到64位計算機後,我們也遇到了這個錯誤。我們的測試已經在正確的公寓狀態下運行。 – Lodewijk 2011-10-05 12:32:52

+0

窗口句柄在COM互操作中很困難,它們在64位操作系統上是64位值。將主項目的Platform目標更改爲x86。 – 2011-11-03 06:01:10

回答

0

如果我沒有記錯,華廷明確是單線程[STApartment] - http://watin.org/documentation/sta-apartmentstate/ 如果你想有這樣的測試,我相信你需要在操作系統級別的獨立的進程。 我無法確定你是否會碰到這個需求,但我建議單個瀏覽器(和它的後代windows/processessess)單個實例。另外,可能還有另外一個hickup - WatiN使用瀏覽器的內部連接到IE,但如果在這個過程中有任何與Windows /用戶會話相關的活動,這可能會帶來額外的混亂。

2

我也在使用幾個線程,並得到相同的錯誤。使你的主要方法[MTAThread]。這爲我解決了這個問題。

相關問題