如何在Selenium WebDriver中自动清除浏览器缓存?

问题描述:

如何在每次测试运行前清除浏览器缓存?我在setUp方法中使用driver.manage().deleteAllCookies();方法创建驱动实例后,它是为firefox工作的,但是对于IE没有用。请问有什么解决IE浏览器,请提供给我..如何在Selenium WebDriver中自动清除浏览器缓存?

用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);  
       } 
      } //end for 
     }//end if cookie 
    } catch(Exception e) { 
     CTLogManager.log(e); 
    } 
}//end deleteCookie() 

删除缓存 您可以创建一个测试开始前清除浏览器或应用程序缓存一个bat文件。创建bat文件后,只需在测试开始前调用代码即可。

+2

上面的代码被删除的cookie ,不清除缓存。 – Ardesco 2013-05-09 13:38:36

使用下面的代码清除高速缓存中的IE

try { 
    Runtime.getRuntime().exec("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255"); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

@ user1441341请你评论这个工作吗? – praneel 2013-05-13 11:06:10

+0

在C#中为我工作,请参阅我的回复。 – craastad 2013-05-13 13:37:24

+0

不适用于使用IE11的我。 – cnmuc 2013-12-18 17:48:19

利用这个帖子,How To: Execute command line in C#, get STD OUT results,我想出了这个C#代码删除Cookie(和它的副作用是会删除所有IE浏览器的数据)。

public static void DeleteIECookiesAndData() 
{ 
    Process p = new Process(); 
    p.StartInfo.UseShellExecute = false; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.StartInfo.FileName = "RunDll32.exe"; 
    p.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 2"; 
    p.Start(); 
    p.StandardOutput.ReadToEnd(); 
    p.WaitForExit(); 
} 

它并不漂亮,但它的工作原理。也许有些作品可能会被删除。 (请让我知道,如果你找到一个更好的方式来做到这一点)。

有一个驱动程序功能,你可以进行如下设置:它为我在IE11

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); 
capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true); 

来源: http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/ie/InternetExplorerDriver.html

+0

如果您正在使用量角器,可以在“ie.ensureCleanSession”功能散列上设置:“true” - 请参阅https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities – emery 2018-01-24 21:28:37

IE浏览器的每个页面加载后清除每个元素的缓存

ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true); 

这样做会清理:

ieCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);