14

I'm using Selenium IDE to test a web application. Sometimes my tests succeed even though they should have failed. The reason is that the browser happens to load a previous version of a page from the cache instead of loading the newer version of that page. In other words, I might introduce a bug to my app without being aware of it because the tests may pass after loading a previous working version instead of loading the new buggy version.

The best solution I could have thought of is to delete the browser cache before running the tests. I have a Selenium script in which I run set-up selenium commands before running the tests. Is there a selenium command to clear Firefox cache? Alternatively, is there another way to prevent loading pages from the cache during the tests?

4

4 回答 4

12

在 python 中,这应该禁用 firefox 缓存:

profile = webdriver.FirefoxProfile()
profile.set_preference("browser.cache.disk.enable", False)
profile.set_preference("browser.cache.memory.enable", False)
profile.set_preference("browser.cache.offline.enable", False)
profile.set_preference("network.http.use-cache", False)
driver = webdriver.Firefox(profile)

希望这可以帮助某人

于 2016-02-26T23:40:39.193 回答
2

您可以在 Firefox 配置文件中禁用缓存。有关更多详细信息,请参阅此链接

于 2013-08-23T06:12:56.540 回答
1

对于那些使用 Java 编程的人,这是我解决问题的方法:

    FirefoxProfile profile = new FirefoxProfile();
    profile.setPreference("browser.cache.disk.enable", false);
    profile.setPreference("browser.cache.memory.enable", false);
    profile.setPreference("browser.cache.offline.enable", false);
    profile.setPreference("network.http.use-cache", false);
    FirefoxOptions options = new FirefoxOptions().setProfile(profile);
    driver = new FirefoxDriver(options);
于 2019-03-01T11:51:32.837 回答
0

免责声明:我以前从来没有这样做过(清除 cookie 对我来说已经足够了),但据我所知,这是当前 Selenium 版本中缺少的功能,尽管从最近的变更日志来看,它看起来就像开发人员正在努力制定一种标准的方式来做到这一点。在2.33iedriverserver,他们有以下变更说明:

引入了在启动 IE 之前清理浏览器缓存的功能。这个版本引入了 ie.ensureCleanSession 能力,它会在启动 IE 之前清除浏览器缓存、历史记录和 cookie。使用此功能时,请注意这会清除所有正在运行的 Internet Explorer 实例的缓存。在尝试运行 IE 驱动程序的多个实例时使用此功能可能会导致意外行为。请注意,这也会在启动浏览器时导致性能下降,因为驱动程序将在实际启动 IE 之前等待缓存清除过程完成

http://selenium.googlecode.com/git/cpp/iedriverserver/CHANGELOG

为此,您可以在DesiredCapabilities地图中创建驱动程序时使用ensureCleanSession.

http://code.google.com/p/selenium/wiki/DesiredCapabilities

由于您使用的是 firefox,因此使用本机方式执行此操作似乎很不走运。如果你还没有尝试过driver.manage().deleteAllCookies();,我会试试看它是否能让你到达你需要的地方。

于 2013-08-22T20:26:57.097 回答