在 PhantomJS 中自动删除本地存储文件

Removing localStorage file automatically in PhantomJS

本文关键字:存储文件 删除 PhantomJS      更新时间:2023-09-26

我正在使用PhantomJS进行测试。我需要PhantomJS在以下命令之后删除与上一个会话相关的所有信息,

phantom.exit()

实际上,它这样做了,实际上会删除所有cookie,缓存和历史记录。但是,它不会自动删除本地存储命令的保存信息。我需要转到保存此信息的默认路径并手动删除文件。我想知道是否有任何自动删除此文件的方法。我测试了以下方法,但没有一种对我有用。

首先,我使用以下命令为这些信息设置了新的路径,但PhantomJS并不在意,只是再次使用了之前保存的信息。

--local-storage-path = path

其次,我使用PhantomJS的page.open部分使用以下命令清除路径,该命令对我也不起作用。

localStorage.clear();
完成

测试后清除 localStorage 总是好的。你必须记住,你可以同时在PhantomJS中打开多个页面,但localStorage只绑定到一个特定的域。

localStorage.clear();必须在页面上执行,而不是在幻像上下文中执行:

page.evaluate(function(){
    localStorage.clear();
});

因此,每次退出脚本之前,都应该清除 localStorage(可能多次,具体取决于您访问的域数量)。或者,您可以尝试在脚本/页面加载开始时执行此操作,但很难做好。网页必须已具有目标网址,但尚无法加载该网页。否则,clear可能会在页面javascript已经执行的时候出现。那么这可能应该只在每个域执行一次。否则,对网站不同页面的导航将被破坏。


另一个简单的解决方案是使用 fs 模块删除脚本开头 Ofi 实验室目录中的所有 localStorage 文件,但这可能会删除您不想删除的页面的 localStorage。

如果你在 linux x64 上使用 phantomJS 1.9.8,你可以测试这个二进制文件,其中包含 localStoragePath 修复程序: https://github.com/PatrickHuetter/phantomjs/releases/tag/1.9.8-fixedStoragePath

如果你在另一个操作系统上使用phantomjs,你可以签出我的叉子并在你的平台上编译它。 https://github.com/PatrickHuetter/phantomjs/tree/localStoragePathFix

PhantomJS 2.0 已经包含此修复程序,因此如果您使用的是 2.0 版本或更高版本,则可以使用官方二进制文件。