我有一个具有以下结构的应用程序。
BitmapImage
如果不填写之前的页面,则无法访问page2.html。现在我知道我会以错误的方式去做,因为我被困住了
login.html >>> page1.html >>> page2.html
我现在的问题是我不知道下一步该做什么,它会正确登录但我如何检查var page = require('webpage').create();
var system = require('system');
page.onConsoleMessage = function(msg) {
system.stderr.writeLine('console: ' + msg);
};
function open_login(){
login_page('https://test.com/login.html');
}
function login_page(file){
page.open(file,function(){
page.evaluate(function(){
var user = document.querySelector('#username');
var password = document.querySelector('#password');
var submit = document.querySelector('#submit');
user.value = 'user1';
password.value = 'pwd1';
submit.click();
});
// What now? How do I ensure that the page1.html has loaded so that i can get more elements, their values and submit to proceed to page2.html
page.render("login.png");
window.setTimeout(function() {
page.render("login.png");
phantom.exit();
}, 5000);
});
}
open_login();
事件是否已成功加载page1.html?我不能使用jquery,我不能为此用户使用casperjs。必须是幻影。
答案 0 :(得分:0)
每次页面加载完成后都会触发一个回调函数page.onLoadFinished。您可以检查该回调中的当前URL并相应地执行操作。
page.onLoadFinished = function(result) {
var current_url = page.evaluate(function(){
return window.location.href;
});
if(result == "fail") {
console.log("Couldn't load " + current_url);
phantom.exit(1);
}
if(current_url.indexOf("page1.html") !== -1){
do_stuff();
}
else if(current_url.indexOf("page2.html") !== -1){
do_other_stuff();
}
}