正在使用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 :(得分:2)
我也使用了几个线程并且遇到了同样的错误。制作主要方法[MTAThread]。这解决了我的问题。
答案 1 :(得分:0)
如果我没弄错,WatiN显式是单线程[STApartment] - http://watin.org/documentation/sta-apartmentstate/ 如果您希望进行此类测试,我相信您需要在操作系统级别进行单独的过程。 我无法确定你是否接近这个要求,但我建议单个浏览器的单个实例(它是后代的windows / processess)。
此外,可能还有另一个hickup - WatiN使用浏览器的内部连接到IE,但如果在此过程中有任何与Windows / User Session相关的活动,这可能会带来额外的混乱。