在 Selenium IDE 中清除 Firefox 缓存
Posted
技术标签:
【中文标题】在 Selenium IDE 中清除 Firefox 缓存【英文标题】:Clear Firefox cache in Selenium IDE 【发布时间】:2013-08-22 10:46:40 【问题描述】:我正在使用 Selenium IDE 测试 Web 应用程序。有时我的测试会成功,即使它们应该失败。原因是浏览器碰巧从缓存中加载了页面的先前版本,而不是加载该页面的较新版本。换句话说,我可能会在不知情的情况下向我的应用程序引入错误,因为测试可能会在加载以前的工作版本而不是加载新的错误版本后通过。
我能想到的最佳解决方案是在运行测试之前删除浏览器缓存。我有一个 Selenium 脚本,我在其中运行设置 selenium 命令,然后再运行测试。是否有清除 Firefox 缓存的 selenium 命令?或者,是否有其他方法可以防止在测试期间从缓存中加载页面?
【问题讨论】:
【参考方案1】:在 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)
希望这对某人有所帮助
【讨论】:
【参考方案2】:您可以在 Firefox 配置文件中禁用缓存。 有关详细信息,请参阅此link。
【讨论】:
如果你懒得点击链接。创建一个 FirefoxPofile 并像这样设置浏览器缓存的首选项。 user_pref("browser.cache.disk.enable", false); user_pref("browser.cache.memory.enable", false); user_pref("browser.cache.offline.enable", false); user_pref("network.http.use-cache", false);为我工作。 我错过了什么吗?我通过谷歌知道了如何创建一个新的配置文件,但是我在哪里添加这些设置呢?以及如何确保 selenium 使用此配置文件而不是我的常规配置文件打开 Firefox? 仅仅禁用 cookie 并不能达到完全的目的。因为像结帐页面这样的页面很少需要您使用 cookie。有没有办法像我们使用 selenium 手动删除历史记录一样【参考方案3】:对于那些使用 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);
【讨论】:
【参考方案4】:免责声明:我以前从未这样做过(清除 cookie 对我来说一直就足够了),但据我所知,这是当前 Selenium 构建中缺乏的功能,尽管来自最近的变更日志,看起来开发人员正在努力制定一种标准的方式来做到这一点。在iedriverserver
的2.33
中,他们有以下变更说明:
引入了在启动 IE 之前清理浏览器缓存的功能。这个版本 引入了 ie.ensureCleanSession 能力,它将清除 启动 IE 之前的浏览器缓存、历史记录和 cookie。当使用这个 能力,请注意,这会清除所有正在运行的实例的缓存 IE浏览器。在尝试运行多个时使用此功能 IE 驱动程序的实例可能会导致意外行为。还要注意这一点 启动浏览器时会导致性能下降,因为驱动程序会 在实际启动之前等待缓存清除过程完成 浏览器
http://selenium.googlecode.com/git/cpp/iedriverserver/CHANGELOG
为此,您可以在创建驱动程序时使用ensureCleanSession
在DesiredCapabilities
映射中指定它。
http://code.google.com/p/selenium/wiki/DesiredCapabilities
由于您使用的是 firefox,因此使用本机方式执行此操作似乎很不走运。如果您还没有尝试过driver.manage().deleteAllCookies();
,我会尝试一下,看看它是否能让您到达您需要的地方。
【讨论】:
以上是关于在 Selenium IDE 中清除 Firefox 缓存的主要内容,如果未能解决你的问题,请参考以下文章