2010-04-28 48 views
3

在我的一個Selenium測試用例中,我嘗試確保某些頁面無法訪問。相反,應該給出HTTP返回碼403。不要停止HTTP錯誤403

然而,這裏硒終止測試執行與以下異常:

com.thoughtworks.selenium.SeleniumException: XHR ERROR: URL = http://user:[email protected]/admin Response_Code = 403 Error_Message = Forbidden

任何方式來解決呢?

+0

沒有人有任何想法嗎? – Sebi 2010-04-29 06:29:19

回答

4

好像我來回答這個問題我自己...

我現在圍繞着「開放」與try ... catch塊調用。在那裏,如果它包含403代碼和XHR ERROR,我將解析異常消息。對我來說似乎不是很乾淨,但它工作。

2

我不知道你在用什麼語言,但我想你可以通過指示Selenium在打開頁面時忽略狀態碼來解決這個問題。

在Ruby:

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

在C#:

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

我相信,在硒行李箱行爲是現在忽略默認的狀態代碼。所以,你可以嘗試構建它,看看它是否適合你。

+0

我正在使用java客戶端庫。目前的穩定版本沒有這樣的附加參數。從源頭編譯目前不是一個真正的選項(嚴格的項目計劃):-( – Sebi 2010-05-06 17:45:56

2

我正在嘗試使用PHPUnit測試HTTP 403錯誤。我檢查了PHPUnit Selenium擴展代碼,發現驅動程序一收到錯誤響應就立即結束會話,並且似乎沒有辦法繞過此功能。

最後我用一個try-catch解決方案並重新啓動硒會議:

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

當硒會話重新啓動時,所有的會話信息丟失,因爲是可以預料的,所以你需要再次建立您的會話,以便運行更多測試:

$this->loginAsGuest(); 

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