2

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

我的问题是使用 casperjs 进行测试时无法清除本地存储。

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

4

3 回答 3

7

我通过删除以下目录之一中的文件 *.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

于 2013-05-22T09:08:06.443 回答
6

加载页面后运行这个怎么样?

casper.evaluate(function() {
  localStorage.clear();
}, {});
于 2012-12-07T17:03:12.543 回答
2

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

}

于 2017-01-05T11:52:13.593 回答