3

私の Selenium テスト ケースの 1 つで、特定のページにアクセスできないようにしています。代わりに、HTTP リターン コード 403 が返されます。

ただし、ここで Selenium は次の例外を除いてテストの実行を終了します。

com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL = http://user:password@www.example.com/admin Response_Code = 403 Error_Message = Forbidden

それを回避する方法はありますか?

4

3 に答える 3

4

私は自分で質問に答えなければならないようです...

ここで、「open」呼び出しを try...catch ブロックで囲みます。そこで、例外メッセージに 403 コードと XHR ERROR が含まれているかどうかを解析します。私にはあまりきれいではないようですが、うまくいきます。

于 2010-04-29T09:50:13.003 に答える
2

使用している言語はわかりませんが、ページを開くときにステータス コードを無視するように Selenium に指示することで、これを回避できると思います。

ルビーの場合:

@browser.remote_control_command('open', [url, 'true'])

C# の場合:

((DefaultSelenium)selenium).Processor.DoCommand("open", new string[]{url, "true"}))

Selenium トランクの動作は、デフォルトでステータス コードを無視するようになったと思います。したがって、それを構築してみて、うまくいくかどうかを確認できます。

于 2010-05-05T19:26:00.483 に答える
2

PHPUnit を使用して HTTP 403 エラーをテストしようとしていました。PHPUnit Selenium 拡張機能のコードを調べたところ、ドライバーは不適切な応答を受信するとすぐにセッションを終了し、この機能をバイパスする方法はないようです。

最後に、try-catch ソリューションを使用して、Selenium セッションを再起動しました。

try {
    $this->open('restricted_url');
    $this->assertTitle('The page cannot be displayed');
} catch (PHPUnit_Framework_Exception $e) {
    $this->start();
}

Selenium セッションが再起動されると、当然のことながら、すべてのセッション情報が失われるため、さらにテストを実行するには、セッションを再構築する必要があります。

$this->loginAsGuest();

try {
    $this->open('admin_url');
    $this->assertTitle('The page cannot be displayed');
} catch (PHPUnit_Framework_Exception $e) {
    $this->start();
    $this->loginAsGuest();
}
于 2010-12-08T13:51:21.537 に答える