2

localstorage を使用して backbonejs アプリケーションのテストを行うために casperjs を使用しています。

私の問題は、casperjs でテストするときに localstorage をクリアできないことです。

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 を正しくクリアしません。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 に答える