如何在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文件后,只需在测试开始前调用代码即可。
使用下面的代码清除高速缓存中的IE
try {
Runtime.getRuntime().exec("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");
} catch (IOException e) {
e.printStackTrace();
}
利用这个帖子,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
如果您正在使用量角器,可以在“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);
上面的代码被删除的cookie ,不清除缓存。 – Ardesco 2013-05-09 13:38:36