10

如何在每次测试运行之前清除浏览器缓存?我在创建驱动程序实例后尝试了driver.manage().deleteAllCookies();insetUp方法,它适用于 firefox,但对于 IE 没有用。IE有什么解决方案吗,请提供我..

4

5 回答 5

13

您可以设置如下驱动程序功能:

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

它在 IE11 上对我有用。

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

于 2014-03-19T19:59:57.947 回答
3

使用以下代码清除 IE 中的缓存

try {
    Runtime.getRuntime().exec("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");
} catch (IOException e) {
    e.printStackTrace();
}
于 2013-05-09T12:41:51.140 回答
2

使用这篇文章,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();
}

它一点也不漂亮,但它确实有效。也许有些碎片可以被删除。(如果您找到更好的方法,请告诉我)。

于 2013-05-13T13:37:00.007 回答
2

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

ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);

这将进行会话清理:

ieCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
于 2014-10-08T12:44:45.800 回答
-1

使用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 文件后,只需在测试开始之前调用您的代码。

于 2013-05-09T12:13:34.920 回答