4

我正在使用 Selenium 中的 Chrome Web 驱动程序进行大量测试。问题是每次我运行它时,它都必须重新下载所有站点图像,这需要时间。它不会缓存这些图像。

所以我想设置要渲染的文件和不渲染的文件。显然我希望 Javascript 和 CSS 文件仍然可以下载。但我特别想关闭图像。

这可能吗?如果没有,有没有办法启用缓存?所以下次我运行程序时,它可以从本地缓存中获取图像。

4

4 回答 4

3

解决方案是再次加载相同的 chrome 配置文件,它应该(可能不)确保图像和其他类似的东西被缓存。

以下是如何加载特定配置文件:

https://code.google.com/p/selenium/wiki/ChromeDriver

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
  capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir=/path/to/profile/directory"));
  WebDriver driver = new ChromeDriver(capabilities);

在 SO 上进行了类似的搜索,得到了这个结果 - Load Chrome Profile using Selenium WebDriver using java你可能会费心去看看。

于 2013-08-25T07:10:40.480 回答
2

据我所知,从一个会话缓存到另一个会话是不可能的。

但是,如果您无头运行它,则可以删除呈现页面。这将加载页面,但不渲染它(使其可见,加载图像)。

您可以使用标准的 HTMLUnitDriver,但有些过时,或者您可以使用 PhantomDriver,它具有更现代的 Javascript 版本。

于 2013-08-24T22:50:15.793 回答
1

“你可以使用 HTMLUnitDriver”>>> 小心这个!

请注意,由于 HTMLUnitDriver 与真实浏览器的实现不同,因此您可能会或可能不会在两者中获得相同的结果。因此,如果您开始遇到奇怪的问题,例如使用 Chrome 运行测试通过但使用 HTMLUnitDriver 运行测试没有通过,请考虑仅使用浏览器驱动程序运行测试。我从同事那里听说过很长的故障排除故事,他们不得不放弃在无头模式下运行他们的套件(即,使用 HTMLUnitDriver)。

注意:由于我无法对所选答案发表评论,因此我“被迫”将其作为答案。如果有人可以帮助我在评论中转换它,我将不胜感激!谢谢

于 2015-04-30T12:48:16.133 回答
0

要缓存图像,您需要 squid 或 haproxy 之类的东西,然后通过它代理您的 selenium 浏览器。

于 2014-05-15T14:27:24.003 回答