Я экспериментирую с WatiN для нашего тестирования пользовательского интерфейса, я могу заставить тесты работать, но потом не могу закрыть IE.
Я пытаюсь закрыть IE в коде очистки моего класса, используя пример WatiN IEStaticInstanceHelper техника .
Кажется, проблема в подключении к потоку IE, время ожидания которого истекло:
_instance = IE.AttachTo<IE>(Find.By("hwnd", _ieHwnd));
(_ ieHwnd - дескриптор IE, сохраняемый при первом запуске IE.)
Это дает ошибку:
Метод очистки класса
Ошибка Class1.MyClassCleanup. ошибка
Сообщение:
WatiN.Core.Exceptions.BrowserNotFoundException:
Не удалось найти соответствие окна IE
ограничение: атрибут 'hwnd' равен
'1576084'. Поиск истек после '30'
секунд .. Трассировка стека: в
WatiN.Core.Native.InternetExplorer.AttachToIeHelper.Find (Constraint
findBy, тайм-аут Int32, логическое значение
waitForComplete)
Я уверен, что, должно быть, я упускаю что-то очевидное, у кого-нибудь есть идеи по этому поводу?
Спасибо
Для полноты статический помощник выглядит так:
public class StaticBrowser
{
private IE _instance;
private int _ieThread;
private string _ieHwnd;
public IE Instance
{
get
{
var currentThreadId = GetCurrentThreadId();
if (currentThreadId != _ieThread)
{
_instance = IE.AttachTo<IE>(Find.By("hwnd", _ieHwnd));
_ieThread = currentThreadId;
}
return _instance;
}
set
{
_instance = value;
_ieHwnd = _instance.hWnd.ToString();
_ieThread = GetCurrentThreadId();
}
}
private int GetCurrentThreadId()
{
return Thread.CurrentThread.GetHashCode();
}
}
И код очистки выглядит так:
private static StaticBrowser _staticBrowser;
[ClassCleanup]
public static void MyClassCleanup()
{
_staticBrowser.Instance.Close();
_staticBrowser = null;
}