web-dev-qa-db-ja.com

SeleniumでHTTPステータスコードを確認する

SeleniumでHTTPステータスコードを取得する方法は?

例えば。ブラウザが/ user/27をリクエストし、ID = 27のユーザーが存在しない場合、HTTP 404が返されることをテストできますか?

私の主な関心はSelenium RCですが、誰かが「通常の」Seleniumの答えを知っていれば、おそらく簡単にRCに翻訳できます。

/ピート

42
Pete

これは、このタイプのテストでのSeleniumの最適な使用法ではありません。実行可能なテストを実行し、より高速に実行できる場合は、ブラウザをロードする必要はありません。

[Test]
[ExpectedException(typeof(WebException), UserMessage = "The remote server returned an error: (404) Not Found")]
public void ShouldThrowA404()
{
    HttpWebRequest task; //For Calling the page
    HttpWebResponse taskresponse = null; //Response returned
    task = (HttpWebRequest)WebRequest.Create("http://foo.bar/thiswontexistevenifiwishedonedayitwould.html");
    taskresponse = (HttpWebResponse)task.GetResponse();
}

404 Seleniumの実行中にテストで別のページにリダイレクトする場合、最終ページに期待どおりのものがあるかどうかを確認できます。

10
AutomatedTester

私はこれが衝撃的なハックであることを知っていますが、これは私がやったことです:

    protected void AssertNotYellowScreen()
    {
        var Selenium = Selenium;

        if (Selenium.GetBodyText().Contains("Server Error in '/' Application."))
        {
            string errorTitle = Selenium.GetTitle();

            Assert.Fail("Yellow Screen of Death: {0}", errorTitle);
        }
    }

私はそれが理想的ではないことを受け入れますが、私はそれを必要としていた状況で仕事をやり遂げます...

6

Selenium 2にはHtmlUnitが含まれているため、応答に直接アクセスするためにそれを利用できます。

public static int getStatusCode(long appUserId) throws IOException {
    WebClient webClient = new WebClient();
    int code = webClient.getPage(
            "http://your.url/123/"
    ).getWebResponse().getStatusCode();
    webClient.closeAllWindows();
    return code;
}
5
Sotomajor

おそらくcaptureNetworkTraffic()呼び出しをチェックアウトする必要があります。現在のところ、ポート4444を介してトラフィックをプロキシするようにIE/Safari/etcを手動で設定しない限り、Firefoxでのみ確実に動作します。

それを使用するには、Selenium.start( "captureNetworkTraffic = true")を呼び出すだけで、スクリプトの後半でSelenium.captureNetworkTraffic( "...")を呼び出すことができます。ここで、「...」は「plain」、「xml」です。 「または「json」。

1

試したことはありませんが、Firefoxに限定してFirebugとNetexportをインストールすることを気にしない場合、Seleniumはページステータスコード(およびFirebugのNetパネルの他のすべて)にアクセスできます: http ://Selenium.polteq.com/en/using-netexport-to-export-firebugs-net-panel/

0
Matthew Lock