我正在使用 casperjs 对使用 localstorage 的主干应用程序进行一些测试。
我的问题是使用 casperjs 进行测试时无法清除本地存储。
我一直在尝试localStorage.clear();
在我的 casper 文件的开头使用,但没有清除任何内容。
我正在使用 casperjs 对使用 localstorage 的主干应用程序进行一些测试。
我的问题是使用 casperjs 进行测试时无法清除本地存储。
我一直在尝试localStorage.clear();
在我的 casper 文件的开头使用,但没有清除任何内容。
我通过删除以下目录之一中的文件 *.localstorage 找到了解决此问题的方法:
Windows c:\Users\YOUR_USER\AppData\Local\Ofi Labs\PhantomJS\
Mac OS X:/Users/YOUR_USER/Library/Application Support/Ofi Labs/PhantomJS
Linux:/home/YOUR_USER/.local/share/data/Ofi Labs/PhantomJS
加载页面后运行这个怎么样?
casper.evaluate(function() {
localStorage.clear();
}, {});
PhantomJS 没有正确清除本地存储。localStorage.clear(); 不起作用(至少不可靠)
您必须删除文件系统上的“.localstorage”文件。在打开页面之前必须调用 fs.remove 命令。Phantomjs 在页面打开时锁定该文件。
我在我们的项目中是这样做的:
function clearStorage() {
var fs = require('fs');
var system = require('system');
var myDomain = [I get this value from the commandline Parameter I give to CasperJS];
if(system.os.name === 'windows') {
var userName = system.env['USERPROFILE'].split('\\')[2];
var localstoragePath = 'C:/Users/' + userName + '/AppData/Local/Ofi Labs/PhantomJS/';
var localStorageFilename = myDomain.replace('://', '_').replace('/', '') + '_0.localstorage';
} else {
var userName = system.env['USER'];
var localstoragePath = '/home/' + userName + '/.local/share/Ofi Labs/PhantomJS/';
var localStorageFilename = myDomain.replace('://', '_') + '_0.localstorage'; //Linux does not have the last "/" so no replace needed for that
}
if(fs.exists(localstoragePath + localStorageFilename)) {
fs.remove(localstoragePath + localStorageFilename, function(err) {
if (err) {
casper.echo(err);
}
casper.echo("File deleted successfully!");
});
}
}