私はUIテストのためにWatiNを試していますが、動作するようにテストを受けることはできますが、後でIEを閉じることはできません。WatiNをIEに接続する際の問題
WatiNの例IEStaticInstanceHelper techniqueを使用して、私のクラスクリーンアップコードでIEを閉じようとしています。
問題IEスレッド、時間外にアタッチしているようだ:
_instance = IE.AttachTo<IE>(Find.By("hwnd", _ieHwnd));
(。_ieHwndは、IEが最初に起動したときに保存されたIEのハンドルです)
これはエラーを与えます:
Class Cleanup method Class1.MyClassCleanup failed. Error Message: WatiN.Core.Exceptions.BrowserNotFoundException: Could not find an IE window matching constraint: Attribute 'hwnd' equals '1576084'. Search expired after '30' seconds.. Stack Trace: at WatiN.Core.Native.InternetExplorer.AttachToIeHelper.Find(Constraint findBy, Int32 timeout, Boolean 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;
}
同じ問題が発生していますが、MSTestもMbUnitも使用していません。 これを解決した可能性のある環境が変更されましたか? –
私は、テストがスレッディングを行う方法には、これはさまざまな設定について説明していると思います。 http://watin.sourceforge.net/apartmentstateinfo.html 私が設定したやり方は、FixtureSetUpを介してページのperformeアクションなどにナビゲートし、FixtureTearDownでブラウザを閉じました。 WatiNは他の設定ではうまくいきませんでした。 –