2012-03-02 3 views
1

웹 사이트를 변경하지 않고 사용자 세션이 만료되는 시나리오를 테스트하고 싶습니다. Selenium을 사용하여 표준 시간 초과를 기다리지 않고 만료되도록 강제로 쿠키를 조정할 수 있습니까?Selenium으로 쿠키를 만료시킬 수 있습니까?

+0

어떤 기술이 필요합니까? 자바? 루비? 뭐? 내가 자바에서 솔루션을 가지고 자바 스크립트를 사용합니다. –

+0

ASP.NET,하지만 솔루션이 프레임 워크와 상관없이 비슷할 것이라고 상상해보십시오. –

+0

자바 스크립트 솔루션을 사용해보십시오. 실제로는 asp.net :-( –

답변

2

해결 방법 1 : 자바 스크립트

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를 사용 : 당신은 시험 시작 전에 브라우저 또는 응용 프로그램 캐시를 삭제 한 박쥐 파일을 만들 수 있습니다. 박쥐 파일을 만든 후 테스트 시작 전에 코드를 호출하십시오. .

해결책 3 : 자바

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 : I는 (

driver.manage 하나의 방법을 만들고 코드 아래에 배치)을 deleteAllCookies();

sel.refresh();

driver.navigate(). (YOUR FILE PATH);

+0

해결책 1은 페이지가 캐시되지 않도록하고 인증 쿠키의 만료와는 아무런 관련이 없으며 솔루션 2는 모든 쿠키를 지 웁니다. 사용자 세션이 만료 된 시나리오를 테스트하는 데 도움이되지 않습니다. 솔루션 3은 작동 할 것으로 예상되지만 피하려고하는 솔루션이기도합니다. 서버 코드를 변경하지 않고이 시나리오를 테스트 할 수 있기를 바랍니다. –

+0

배치했을 때 솔루션 4, 나를 위해 작동합니다 .- 브라우저를 다시 시작하지 않고도 브라우저 캐시를 삭제하고 싶습니다. –

관련 문제