2011-04-07 13 views
2

オートメーションが行われている有効ではありません。複数の同時スレッドを使用してアプリケーションをテストするいくつかのスレッドは失敗し、ログreport/stack traceは以下を示します。System.InvalidCastExceptionの:指定されたキャストはWatiNを使用して

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

+0

COM相互運用機能では、64ビットのオペレーティングシステムでは64ビットの値であるため、ウィンドウハンドルは難しいです。メインプロジェクトのPlatformターゲットをx86に変更します。 –

答えて

0

私は間違っていない場合は、WatiNは、明示的に[STApartment] シングルスレッドである - http://watin.org/documentation/sta-apartmentstate/ あなたは、このようなテストを持っているしたい場合、私はあなたがOSレベルでの個別のプロセスが必要と考えています。 必ずこの要件と衝突接近しないために、私が言うことができない、まだ私は、単一のブラウザのための単一のインスタンスをお勧めしたい(そしてそれが子孫ウィンドウ/ processessです)。

また、別のhickupがあるかもしれない - WatiNは、ブラウザの内部を使用してIEに接続しますが、道に沿って任意のWindows /ユーザーセッションに関連する活動がありますならば、これは追加的な混乱をもたらす可能性があります。

2

私はまた、スレッドのカップルを使用していたし、同じエラーを得ていました。主な方法を作る[MTAThread]これは私の問題を解決しました。

関連する問題