我正在使用 Selenium 中的 Chrome Web 驱动程序进行大量测试。问题是每次我运行它时,它都必须重新下载所有站点图像,这需要时间。它不会缓存这些图像。
所以我想设置要渲染的文件和不渲染的文件。显然我希望 Javascript 和 CSS 文件仍然可以下载。但我特别想关闭图像。
这可能吗?如果没有,有没有办法启用缓存?所以下次我运行程序时,它可以从本地缓存中获取图像。
我正在使用 Selenium 中的 Chrome Web 驱动程序进行大量测试。问题是每次我运行它时,它都必须重新下载所有站点图像,这需要时间。它不会缓存这些图像。
所以我想设置要渲染的文件和不渲染的文件。显然我希望 Javascript 和 CSS 文件仍然可以下载。但我特别想关闭图像。
这可能吗?如果没有,有没有办法启用缓存?所以下次我运行程序时,它可以从本地缓存中获取图像。
解决方案是再次加载相同的 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你可能会费心去看看。
据我所知,从一个会话缓存到另一个会话是不可能的。
但是,如果您无头运行它,则可以删除呈现页面。这将加载页面,但不渲染它(使其可见,加载图像)。
您可以使用标准的 HTMLUnitDriver,但有些过时,或者您可以使用 PhantomDriver,它具有更现代的 Javascript 版本。
“你可以使用 HTMLUnitDriver”>>> 小心这个!
请注意,由于 HTMLUnitDriver 与真实浏览器的实现不同,因此您可能会或可能不会在两者中获得相同的结果。因此,如果您开始遇到奇怪的问题,例如使用 Chrome 运行测试通过但使用 HTMLUnitDriver 运行测试没有通过,请考虑仅使用浏览器驱动程序运行测试。我从同事那里听说过很长的故障排除故事,他们不得不放弃在无头模式下运行他们的套件(即,使用 HTMLUnitDriver)。
注意:由于我无法对所选答案发表评论,因此我“被迫”将其作为答案。如果有人可以帮助我在评论中转换它,我将不胜感激!谢谢
要缓存图像,您需要 squid 或 haproxy 之类的东西,然后通过它代理您的 selenium 浏览器。