localstorage を使用して backbonejs アプリケーションのテストを行うために casperjs を使用しています。
私の問題は、casperjs でテストするときに localstorage をクリアできないことです。
localStorage.clear();
casper ファイルの先頭で使用しようとしましたが、何もクリアされません。
localstorage を使用して backbonejs アプリケーションのテストを行うために casperjs を使用しています。
私の問題は、casperjs でテストするときに localstorage をクリアできないことです。
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 を正しくクリアしません。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!");
});
}
}