SessionStorage неправильно настроен с использованием приведенного ниже сценария. Я пытаюсь установить хранилище в обратном вызове page.evaluate
, но мне не повезло, и моя «полная» проверка прошла бесконечно. Я столкнулся с той же проблемой с casper, попробовав аналогичную модель оценки и перезагрузки. Я не могу проверить, потому что все запросы ajax используют sessionStorage для получения авторизации JWT. Я знаю, что у меня должен быть доступ к окну для оценки, поэтому я не уверен, почему это не работает.Как установить sessionStorage в PhantomJS и CasperJS?
var page = require("webpage").create();
var url = "http://xxxxxxxx.com";
var t0 = Date.now;
function onPageReady() {
var t1 = Date.now;
var elapsed = t1 - t0;
var htmlContent = page.evaluate(function() {
return document.documentElement.outerHTML;
});
console.log(htmlContent);
console.log("ELAPSED TIME: " , elapsed + "\n") ;
phantom.exit(0);
}
page.open(url, function (status) {
var sessionStorage = page.evaluate(function(){
sessionStorage.setItem('authorization','xxxxxxxxxxxxxxxxx');
//window.sessionStorage.setItem('authorization','xxxxxxxxxx');
window.sessionStorage.setItem('_USER','value');
window.sessionStorage.setItem('USERNAME','value');
window.sessionStorage.setItem('INTERNAL','value');
console.log(window.sessionStorage);
return sessionStorage;
});
t0 = Date.now;
console.log(JSON.stringify(sessionStorage));
console.log(JSON.stringify(window.sessionStorage));
function checkReadyState() {
setTimeout(function() {
var readyState = page.evaluate(function() {
return document.readyState;
});
if ("complete" === readyState) {
// checking if my ng-repeat has loaded
if (document.getElementsByClassName('quoteTr').length > 1){
console.log("ready!")
onPageReady();
} else {
console.log("script not complete")
checkReadyState();
}
} else {
checkReadyState();
}
});
}
checkReadyState();
});