PhantomJS的Phantom节点包等效代码
Phantom node package equivalent code for PhantomJS
我很难转换此代码以使其可在节点服务器中使用。所以这段代码被编写为在 PhantomJS 进程中运行(即 $:phantomjs index.js),但我想使用包 require("phantom")在节点服务器中运行它;但是,我无法使这两个回调正常工作。
page.onLoadFinished = function(status){
console.log("Load Finished");
};
page.onUrlChanged = function(){
console.log("URL Changed");
};
这是我试图掩盖整个局势的可悲尝试。
phantom.create(['--ignore-ssl-errors=yes','--load-images=no']).then(function(ph) {
console.log("here");
ph.createPage().then(function(page) {
page.property('onResourceRequested', function(requestData, networkRequest) {
console.log(requestData.url);
});
page.open('https://example.com/login').then(function(status) {
console.log(status);
if (status !== 'success') { console.log("failed connection")} else {
page.evaluate(function() {
document.getElementById('email').value = "stuff";
document.getElementById('password').value = "things";
setTimeout(document.getElementsByTagName('button')[0].click(),5000);
console.log("login attempt");
setTimeout(document.URL, 2000);
});
page.onLoadFinished = function(status){
console.log("Load Finished");
};
page.onUrlChanged = function(){
console.log("url changed");
};
}
});
});
});
此外,代码可以工作并获取页面并单击按钮,但是问题是在幻影登录后,我需要下一页的数据,我将使用 onUrlChanged 和 onLoadFinish 来做。
page.onLoadDone 和 page.onUrlChanged 是在打开页面后执行的回调函数,因此在打开 url 之前分配它们是有意义的。
订阅控制台.log和网页中的错误消息也是一种有用的习惯。
var phantom = require('phantom');
phantom.create(['--ignore-ssl-errors=yes','--load-images=no']).then(function(ph) {
console.log("here");
ph.createPage().then(function(page) {
page.property('onError', function(msg, trace) {
var msgStack = ['ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
});
}
console.error(msgStack.join(''n'));
});
page.property('onConsoleMessage', function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
});
page.property('onResourceRequested', function(requestData, networkRequest) {
console.log(requestData.url);
});
page.property('onLoadFinished', function(status) {
console.log("Load Finished with status " + status);
});
page.property('onUrlChanged', function(targetUrl) {
console.log("URL changed to: " + targetUrl);
});
page.open('https://example.com/login').then(function(status) {
if (status !== 'success') { console.log("failed connection")} else {
page.evaluate(function() {
document.getElementById('email').value = "email";
document.getElementById('password').value = "password";
setTimeout(function(){
console.log("login attempt");
document.getElementsByTagName('button')[0].click();
}, 5000);
});
});
}
});
});
});
相关文章:
- 如何发送作为节点请求响应函数中的代码块的响应
- 查找将 onclick 事件分配给节点的代码
- 节点 js 中的客户端代码
- 节点 - 将 JSON 文件加载到代码中
- 如何在节点的沙盒环境中执行用户提交的javascript代码
- 如何将多行javascript代码写入带有节点的文件
- 将jQuery节点转义为文本,以便HTML代码可见
- 从HTML代码段创建节点列表后,.find()未按预期工作
- 这是什么'...${...}节点文档中的代码意味着
- PhantomJS的Phantom节点包等效代码
- 使节点.js代码在浏览器中工作
- 在节点.js代码中实现回调的问题
- jQuery或JS代码,用于获取网页中当前选定的表单项/文本/图像的确切节点数据
- 在节点.js中强制使用顺序代码
- 节点 js 退出状态 8,错误代码 0 在 Mac 上运行
- 为什么这段代码卡住了节点.js - Javascript上的错误
- Webpack 在目标节点时忽略代码拆分
- 节点 JS:使用状态代码 503 重试函数
- 获取未定义的节点.js代码
- 套接字在服务器端代码节点内发出