1

テスト中にInternetExplorerを何度も開いたり閉じたりする必要があるテスト方法があります。私はこのようなプロセスを作成しています:

プロセスプロセス=Process.Start(...);

そして、このように閉じます:

process.CloseMainWindow();

ただし、このメソッドを呼び出すことができるのは1回だけであることがわかりました。そうしないと、「プロセスが終了したため、要求された情報を利用できません」というエラーメッセージが表示されます。

プロセスを閉じたら、InternetExplorerを再起動します。例えば

process = Process.Start(...);

しかし、これはうまくいきませんでした。また、Process.Start()メソッドを呼び出す前にProcess変数をヌルにしようとしましたが、これは機能しませんでした。

process.Kill()も使ってみましたが、これも問題を引き起こしました。

これを行う正しい方法は何ですか?

更新:コード

Process Browser;

[TestInitialize]
public void TestSetup()
{
    Browser = TestBase.LaunchBrowser();

    ...

    Browser.WaitForInputIdle();
    Browser.CloseMainWindow();

    Browser = null
    Browser = Process.Start("IExplore.exe", ...);
}

[TestMethod]
public void MyTest()
{
   // do things
   Browser.Kill();
   Browser = Process.Start("IExplore", "www.adifferentwebpage");
}

[TestCleanup]
public void TestCleanup
{
   Browser.Kill();
}
4

2 に答える 2

1

同じ変数を再利用せずに別のプロセスを作成することをお勧めします。コードを using ステートメント内にカプセル化して、プロセス変数を適切に閉じて破棄します

using(Process process = new Process())
{
    // do you stuff 

    process.Start(.....);

    process.CloseMainWindow();
}

また、CloseMainWindow を呼び出しても、プロセスが終了することは保証されないことにも注意してください。プロセスのメイン ウィンドウを閉じる要求のみを送信します。アプリケーションが終了する前にユーザーの確認を求める場合、アプリケーションは終了を拒否できます。

于 2012-08-30T17:02:30.803 に答える
0

解決策を見つけましたが、コード化された UI テスト DLL (Visual Studio Ultimate および Premium に付属していると思われます) にアクセスできるユーザーにのみ適用されます。したがって、質問のタグを変更します。

コード化された UI テスト プロジェクトを作成する場合、これらの DLL 参照は既に存在しますが、この参照を使用する必要があります。

Microsoft.VisualStudio.TestTools.UITesting を使用して;

ブラウザ ウィンドウを作成するには:

BrowserWindow browser = BrowserWindow.Launch(new System.Uri("www.whatever.com"));

閉じるには:

Browser.Close();

ブラウザを何度再起動する必要があったとしても、これは機能しました。この API には、Cookie の削除、現在のブラウザの URL の変更、ウィンドウのサイズ変更など、他にも便利な機能が多数含まれています。

于 2012-08-31T09:54:14.400 に答える