2

自動化された UI テストを開発するために、Watin 2.0 を使用しています。ブラウザーを開いた後、Watin にブラウザーを閉じることができません。Watin.Core.Browser オブジェクトは IDisposible を実装していますが、Dispose() はうまくいきません。Close() メソッドも使用してみました。

ごく最近、IE オブジェクトのインスタンス化を Using ステートメントでラップしようとしましたが、うまくいきませんでした。

私はIE8でテストしています

using (IE ie = new IE())
{
    ie.GoTo(ApplicationContainer.SummaryUriProvider.URI);
    Link furthurReadingLink = ie.Link(Find.ByText("Further Reading"));
    furthurReadingLink.Click();

    string subTitle = ie.Div("frheader").Element(Find.ByClass("panelsubtitle")).Text;

    Assert.AreEqual("Further Reading", subTitle);
}
4

5 に答える 5

1

パーティーに遅れましたが、ForceClose() を試しましたか?

if (ie.NativeBrowser != null)
{
    ie.ForceClose();
}

または、IE の他のインスタンスが開いていないことを確認するには、開いているすべてのインスタンスを見つけて、それらを ForceClose() します。

while (IE.InternetExplorersNoWait().Count > 0)
{
    var ie = IE.InternetExplorersNoWait()[0];
    ie.ForceClose();
}

Dispose() メソッドを強制することもできます。

if (ie.NativeBrowser != null)
{
    ie.Dispose();
}
于 2014-03-27T09:13:30.977 に答える
1

テストで何らかの例外がスローされた場合、dispose が呼び出されることはないようです。

于 2010-08-16T23:52:29.657 に答える
1

また、 IE 開発者コンソール(F12) を開いていないことも確認する必要があります。これにより、.Close() が呼び出されたときに WatiN 2.1 がハングします。

HTH

于 2012-02-29T23:34:18.623 に答える
0

また、ブラウザのAutoCloseプロパティを確認することをお勧めしますie.AutoClose

于 2010-08-04T20:56:10.547 に答える
0

ie.close() は ie 8 で私のために働いた

于 2010-07-22T22:59:00.213 に答える