2

有没有办法使用 Selenium WebDriver 清除浏览器缓存?如果我可以为更大的测试用例清除缓存会有所帮助,有时我会遇到以下异常:

“在缓存中找不到元素 - 页面可能在查找后已更改”。

我正在使用java。任何建议将不胜感激,谢谢!

4

6 回答 6

4

目前,无法通过 Web 驱动程序 API 清除缓存。无论如何,如果您每次都可以启动一个新的浏览器实例,则应该在FFChrome中清除缓存,因为每次启动时都会创建一个新的配置文件。

如果无法创建新的浏览器实例,请查看 Selenium 问题跟踪器中问题 #40(清除缓存)的评论,列出两个可能的问题解决方案:

1) 从命令行清除 IE 缓存 2) 使用自定义配置文件禁用 FF 缓存

于 2013-10-11T05:48:31.043 回答
4

该问题与浏览器缓存无关。这意味着您对浏览器 DOM 中的对象有一个过时的引用。通常可能有以下原因:

  1. 您在一页上找到一个元素。然后在浏览器中导航到另一个页面。然后在 Java 代码中,您尝试使用第一页中的元素。它不再有效,您将收到 StaleElementReferenceException 消息“缓存中未找到元素...”

  2. 您在一页上找到一个元素。然后使用 JavaScript 修改页面,从 DOM 中删除您的元素。即使创建了具有相同 ID 和样式的新元素,它也是一个新实例,并且 JavaCode 中的引用是陈旧的。您需要再次查找此元素,您将获得正确的参考。

于 2015-03-01T17:34:29.567 回答
2

您的问题不是关于清除缓存,而是当您尝试与元素交互时,您正在使用的元素很可能已经更改。这有时会发生在动态页面上,页面上的元素变化很快,或者您可能尝试重新使用该元素。在使用之前尝试获取元素。

于 2014-03-27T14:57:09.747 回答
0

您可以在对该特定元素执行任何操作之前使用显式等待,

new WebDriverWait(driver,10).until(ExpectedConditions.presenceOfAllElements("Your object property"));
于 2020-05-15T14:36:28.380 回答
-1

IE浏览器

每次页面加载后清除每个元素的缓存 ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);

这将进行会话清理。ieCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

于 2014-10-08T08:31:48.350 回答
-3

以下代码应该可以工作:

driver.manage().deleteAllCookies();
于 2014-02-05T09:25:54.130 回答