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