我正在使用casperjs使用localstorage对backbonejs应用程序进行一些测试。
我的问题是,在使用casperjs进行测试时,我无法清除localstorage。
我一直在尝试在我的casper文件开头使用localStorage.clear();
,但没有清除任何内容。
答案 0 :(得分:7)
我通过删除以下某个目录中的文件* .localstorage找到了解决此问题的方法:
视窗 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
答案 1 :(得分:6)
加载页面后运行此怎么办?
casper.evaluate(function() {
localStorage.clear();
}, {});
答案 2 :(得分:2)
PhantomJS无法清除localstorage。 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!");
});
}
}