2

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.

助けてください。前もって感謝します。

4

2 に答える 2

2

私もいくつかのスレッドを使用していて、同じエラーが発生していました。メイン メソッドを [MTAThread] にします。これで問題は解決しました。

于 2011-11-03T05:07:57.667 に答える
0

私が間違っていなければ、WatiN は明示的にシングルスレッドです [STApartment] - http://watin.org/documentation/sta-apartmentstate/ そのようなテストが必要な場合は、OS レベルで別のプロセスが必要になると思います。あなたのアプローチがこの要件に衝突するかどうかはわかりませんが、単一のブラウザに対して単一のインスタンスを提案します(そして、それは子孫のウィンドウ/プロセスです)。

また、別の問題が発生する可能性があります。WatiN はブラウザーの内部を使用して IE に接続しますが、途中で Windows またはユーザー セッション関連のアクティビティが発生すると、さらに混乱が生じる可能性があります。

于 2011-04-22T10:14:52.807 に答える