PhantomJS浏览页面并完成全部工作流程

时间:2016-06-30 20:07:04

标签: javascript phantomjs

我有一个具有以下结构的应用程序。

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。必须是幻影。

1 个答案:

答案 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();
    }
}