gpt4 book ai didi

javascript - PhantomJS 导航页面和完整的工作流程

转载 作者:行者123 更新时间:2023-11-28 05:50:23 24 4
gpt4 key购买 nike

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

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

最佳答案

有回调函数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();
}
}

关于javascript - PhantomJS 导航页面和完整的工作流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38132344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com