使用Casperjs清除当地存储

时间:2012-12-06 17:32:13

标签: javascript local-storage phantomjs casperjs

我正在使用casperjs使用localstorage对backbonejs应用程序进行一些测试。

我的问题是,在使用casperjs进行测试时,我无法清除localstorage。

我一直在尝试在我的casper文件开头使用localStorage.clear();,但没有清除任何内容。

3 个答案:

答案 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!");
    });
}

}