【发布时间】:2015-09-14 04:51:54
【问题描述】:
没有使用以下脚本正确设置 sessionStorage。我正在尝试在page.evaluate 回调中设置存储,但我没有运气,我的“完整”检查无休止地循环。我在 casper 上遇到了同样的问题,尝试了类似的评估和重新加载模式。我无法测试,因为所有 ajax 请求都使用 sessionStorage 来获取授权 JWT。我知道我应该可以在评估中访问窗口,所以我不确定为什么这不起作用。
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();
});
【问题讨论】:
标签: javascript phantomjs casperjs session-storage