2016-06-30 2 views
1

У меня есть приложение со следующей структурой.PhantomJS Навигация Страницы и полный полный рабочий поток

login.html >>> page1.html >>> page2.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(); 

Моя проблема сейчас в том, что я понятия не имею, что делать дальше, он будет войти правильно, но как я могу проверить с JavaScript, что click событие загрузило page1.html успешно? Я не могу использовать jquery, и я не могу использовать для этого пользователя casperjs. Должен быть фантом.

ответ

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(); 
    } 
} 
+0

Спасибо! Я попробую и посмотрю. – codeCompiler77

+0

Ну, как все прошло? – Vaviloff

+0

Я не мог заставить его работать, он не знал, что страница загружена и все еще думала, что она находится на исходной странице. – codeCompiler77

Смежные вопросы