System.InvalidCastException: указанное приведение недействительно - PullRequest
2 голосов
/ 07 апреля 2011

Автоматизация с использованием 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 ]

2 голосов
/ 03 ноября 2011

Я также использовал несколько потоков и получал ту же ошибку. Сделайте ваш основной метод [MTAThread]. Это решило проблему для меня.

0 голосов
/ 22 апреля 2011

Если я не ошибаюсь, WatiN явно однопоточный [STApartment] - http://watin.org/documentation/sta-apartmentstate/ Если вы хотите пройти такой тест, я думаю, вам нужны отдельные процессы на уровне ОС. Я не могу точно сказать, подходит ли вам подход с этим требованием, но я бы предложил один экземпляр для одного браузера (и это дочерние окна / процессы).

Кроме того, может быть и другая ошибка - WatiN подключается к IE с помощью внутренних функций браузера, но если на этом пути будут какие-либо действия, связанные с Windows / User Session, это может привести к дополнительной путанице.

...