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.
Пожалуйста, предоставьте некоторую помощь. Заранее спасибо.
2 ответа
Я также использовал несколько потоков и получал ту же ошибку. Сделайте ваш основной метод [MTAThread]. Это решило проблему для меня.
Если я не ошибаюсь, WatiN явно является однопоточным [STApartment] - http://watin.org/documentation/sta-apartmentstate/ Если вы хотите провести такой тест, я считаю, что вам нужны отдельные процессы на уровне ОС. Я не могу точно сказать, подходит ли вам подход с этим требованием, но я бы предложил один экземпляр для одного браузера (и это дочерние окна / процессы).
Кроме того, может быть и другая ошибка - WatiN подключается к IE с помощью внутренних функций браузера, но если на этом пути есть какие-либо действия, связанные с Windows / User Session, это может привести к дополнительной путанице.