2012-03-02 60 views
1

我想測試用戶會話過期的場景,而不會在網站中引入更改。是否可以使用Selenium來調整cookie以強制其到期而不等待標準超時?Selenium有可能過期Cookie嗎?

+0

哪些技術? Java的?紅寶石?什麼?我有解決方案在Java和使用JavaScript。 – 2012-03-02 23:30:34

+0

ASP.NET,但我想不管框架如何,解決方案都是類似的。 – 2012-03-02 23:33:10

+0

嘗試使用javascript解決方案,實際上我不知道asp.net :-( – 2012-03-02 23:39:54

回答

2

解決方法1:使用Java腳本

String jScript_ = "" + 
"Response.Cache.SetExpires(DateTime.Parse(DateTime.Now.ToString()))\n" + 
"Response.Cache.SetCacheability(HttpCacheability.Private)\n" + 
"Response.Cache.SetNoStore()\n" + 
"Response.AppendHeader("Pragma", "no-cache")"; 

selenium.getEval(jScript_); 

解決方案2:您可以創建一個測試開始前清除瀏覽器或應用程序緩存一個bat文件。創建bat文件後,只需在測試開始前調用代碼即可。 。

解決方案3:使用Java

protected void deleteCookie(String cookieName) { 
String cookieDomain = CTPropertiesManager.getProperty("site.properties", "site.cookie.domain"); 
try { 
    //get all cookies 
    Cookie cookies[] = request.getCookies(); 
    Cookie ctCookie=null; 
    if (cookies !=null) { 
    for(int i=0; i<cookies.length; i++) { 
    ctCookie=cookies[i]; 
    if (ctCookie.getName().trim().equals(cookieName)) { 
    if (cookieDomain != null) { 
     ctCookie.setDomain(cookieDomain); 
    } 

    ctCookie.setPath("/ct"); 
    ctCookie.setMaxAge(0); 
    response.addCookie(ctCookie); 
    } 
    } 
    } 
} catch(Exception e){ 
    CTLogManager.log(e); 
} 
} 

解決方案4: 創建一個方法,並置於下方代碼

driver.manage()deleteAllCookies();

sel.refresh(); (您的文件路徑);(如果您的文件路徑不正確,請重新安裝)。

+0

解決方案1阻止頁面被緩存,並且與認證cookie的過期無關;解決方案2只是清除所有的cookie,沒有幫助測試用戶會話過期的場景;我懷疑解決方案3會起作用,但也是我試圖避免的解決方案 - 我希望能夠在不更改服務器代碼的情況下測試此場景。 – 2012-03-02 23:47:34

+0

當我放置解決方案4,它的作品適合我 - 我明白你想在不重啓瀏覽器的情況下刪除瀏覽器緩存 – 2012-03-03 00:06:38