我有一个网站与登录表单。如果用户没有登录并尝试访问内部页面,它将被重定向到默认页面。例如,如果我尝试访问 http://siteURL.PhantomPrint.aspx
我将被重定向到http://siteURL/Default.aspx?ReturnUrl=PhantomPrint.aspx.
并且登录后会自动重定向到页面。Phantomjs登录,重定向和页面后页面完成
在重定向后,我想用Phantomjs呈现页面并将其保存为pdf。问题是渲染发生在页面加载完成之前,我只能使用超时才能正确渲染页面。在这种情况下,如果页面加载比正常时间更长,则导致的pdf不是正确的。
下面你可以找到Java脚本代码:
var page = require('webpage').create();
var index = 0,
page.onConsoleMessage = function (msg) {
console.log(msg);
};
var steps = [
function() {
//Load Login Page
page.open("http://siteURL.PhantomPrint.aspx", function() {
//Enter Credentials
page.evaluate(function() {
console.log("filling inputs");
var usernameInput = document.getElementById("txtUsername");
usernameInput.value = "user";
var passwordInput = document.getElementById("txtPassword");
passwordInput.value = "password";
var loginButton = document.getElementById("btnLogin");
loginButton.click();
console.log("login button was submitted");
});
});
},
function() {
// page.onLoadFinished = function() {
// Render the page to pdf
page.render('example.png');
phantom.exit();
console.log("rendering finished");
//});
}
];
interval = setInterval(function() {
if (!loadInProgress && typeof steps[testindex] == "function") {
console.log("step " + (testindex + 1));
steps[testindex]();
testindex++;
}
if (typeof steps[testindex] != "function") {
console.log("test complete!");
phantom.exit();
}
}, 1000);
我如何能保证渲染任何建议只重定向页面加载完成,欢迎后进行。
我没有看到任何递归。 – 2014-09-10 15:08:46