【发布时间】:2016-03-17 17:57:09
【问题描述】:
我最近开始使用 horseman.js 来使用 node.js 废弃页面。我无法弄清楚它是如何工作的,也无法在互联网上找到好的示例。
我的主要目标是登录一个平台并提取一些数据。我已经设法用 PhantomJS 做到了这一点,但我知道我想学习如何用 horseman.JS 做到这一点。
我的代码应该打开登录页面,填写登录名和密码输入,然后单击“登录”按钮。到目前为止很容易。但是,在单击“登录”按钮后,网站会在加载我想要工作的实际页面之前进行 2 次重定向。
我的问题是我不知道如何让我的代码等待该页面。
使用 phantomJS,我有一个解决页面 URL 的方法。下面的代码展示了我是如何使用 phantomJS 做到的,而且效果很好:
var page = require('webpage').create();
var urlHome = 'http://akna.com.br/site/montatela.php?t=acesse&header=n&footer=n';
var fillLoginInfo = function(){
$('#cmpLogin').val('mylogin');
$('#cmpSenha').val('mypassword');
$('.btn.btn-default').click();
};
page.onLoadFinished = function(){
var url = page.url;
console.log("Page Loaded: " + url);
if(url == urlHome){
page.evaluate(fillLoginInfo);
return;
}
// After the redirects the url has a "sid" parameter, I wait for that to apear when the page loads.
else if(url.indexOf("sid=") >0){
//Keep struggling with more codes!
return;
}
}
page.open(urlHome);
但是,我找不到使用 horseman.JS 处理重定向的方法。
这是我一直在尝试使用 horseman.JS 的方法,但没有成功:
var Horseman = require("node-horseman");
var horseman = new Horseman();
var urlHome = 'http://akna.com.br/site/montatela.php?t=acesse&header=n&footer=n';
var fillLoginInfo = function(){
$('#cmpLogin').val('myemail');
$('#cmpSenha').val('mypassword');
$('.btn.btn-default').click();
}
var okStatus = function(){
return horseman.status();
}
horseman
.open(urlHome)
.type('input[name="cmpLogin"]','myemail')
.type('input[name="cmpSenha"]','mypassword')
.click('.btn-success')
.waitFor(okStatus, 200)
.screenshot('image.png')
.close();
如何处理重定向?
【问题讨论】:
标签: javascript node.js phantomjs