PhantomJS API 第二篇
来源:互联网 发布:求素数高级算法 编辑:程序博客网 时间:2024/05/18 03:23
- Web Page Module
addCookie
var webPage = require('webpage');var page = webPage.create();phantom.addCookie({ 'name' : 'Valid-Cookie-Name', /* required property */ 'value' : 'Valid-Cookie-Value', /* required property */ 'domain' : 'localhost', 'path' : '/foo', /* required property */ 'httponly' : true, 'secure' : false, 'expires' : (new Date()).getTime() + (1000 * 60 * 60) /* <-- expires in 1 hour */});
childFramesCount
childFramesName
clearCookies
close
currentFrameName
deleteCookie
var webPage = require('webpage');var page = webPage.create();page.deleteCookie('Added-Cookie-Name');
evaluateAsync
var webPage = require('webpage');var page = webPage.create();page.open("", function(status) { page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() { page.evaluateAsync(function() { $.ajax({url: "api1", success: function() {}}); }); page.evaluateAsync(function(apiUrl) { $.ajax({url: apiUrl, success: function() {}}); }, 1000, "api2"); });});
evaluateJavaScript
var webPage = require('webpage');var page = webPage.create();page.onConsoleMessage = function(msg) { console.log('The web page said: ' + msg);};page.open('http://phantomjs.org/', function(status) { var script1 = "function(){ window.phantomVar='phantomjs made me do it!'; }"; var script2 = "function(){ console.log(window.phantomVar); }"; page.evaluateJavaScript(script1); page.evaluateJavaScript(script2); phantom.exit();});
var webPage = require('webpage');var page = webPage.create();page.onConsoleMessage = function(msg) { console.log('CONSOLE: ' + msg);};page.open('http://phantomjs.org/', function(status) { var logoUrl = page.evaluateJavaScript('function(){return document.body.querySelector("img").src;}'); console.log(logoUrl); // http://phantomjs.org/img/phantomjs-logo.png phantom.exit();});
evaluate
var webPage = require('webpage');var page = webPage.create();page.open('http://m.bing.com', function(status) { var title = page.evaluate(function() { return document.title; }); console.log(title); phantom.exit();});
page.open('http://m.bing.com', function(status) { var title = page.evaluate(function(s) { return document.querySelector(s).innerText; }, 'title'); console.log(title); phantom.exit();});
var webPage = require('webpage');var page = webPage.create();page.onConsoleMessage = function(msg) { console.log(msg);}page.open('http://m.bing.com', function(status) { page.evaluate(function() { console.log(document.title); }); phantom.exit();});
getPage
goBack
goForward
go
includeJs
var webPage = require('webpage');var page = webPage.create();page.includeJs( // Include the https version, you can change this to http if you like. 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js', function() { (page.evaluate(function() { // jQuery is loaded, now manipulate the DOM var $loginForm = $('form#login'); $loginForm.find('input[name="username"]').value('phantomjs'); $loginForm.find('input[name="password"]').value('c45p3r'); })) });
injectJs
var webPage = require('webpage');var page = webPage.create();page.open('http://www.phantomjs.org', function(status) { if (status === "success") { page.includeJs('http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js', function() { if (page.injectJs('do.js')) { var title = page.evaluate(function() { // returnTitle is a function loaded from our do.js file - see below return returnTitle(); }); console.log(title); phantom.exit(); } }); }});
do.js
window.returnTitle = function() { return document.title;};
openUrl
open
var webPage = require('webpage');var page = webPage.create();page.open('http://www.google.com/', function(status) { console.log('Status: ' + status); // Do other things here...});
var webPage = require('webpage');var page = webPage.create();var postBody = 'user=username&password=password';page.open('http://www.google.com/', 'POST', postBody, function(status) { console.log('Status: ' + status); // Do other things here...});
var webPage = require('webpage');var page = webPage.create();var settings = { operation: "POST", encoding: "utf8", headers: { "Content-Type": "application/json" }, data: JSON.stringify({ some: "data", another: ["custom", "data"] })};page.open('http://your.custom.api', settings, function(status) { console.log('Status: ' + status); // Do other things here...});
release
reload
renderBase64
var webPage = require('webpage');var page = webPage.create();page.viewportSize = { width: 1920, height: 1080};page.open('http://phantomjs.org', function (status) { var base64 = page.renderBase64('PNG'); console.log(base64); phantom.exit();});
renderBuffer
var server = require('webserver').create();var listening = server.listen(8001, function(request, response) { var url = "http://phantomjs.org", format = 'png', quality = -1; var page = require('webpage').create(); page.viewportSize = { width: 800, height: 600 }; page.open(url, function start(status) { // Buffer is an Uint8ClampedArray var buffer = page.renderBuffer(format, quality); response.statusCode = 200; response.headers = { "Cache": "no-cache", "Content-Type": "image/" + format }; page.close(); // Pass the Buffer to 'write' to send the Uint8ClampedArray to the client response.write(buffer); response.close(); });});
render
var webPage = require('webpage');var page = webPage.create();page.viewportSize = { width: 1920, height: 1080 };page.open("http://www.google.com", function start(status) { page.render('google_home.jpeg', {format: 'jpeg', quality: '100'}); phantom.exit();});
sendEvent
var webPage = require('webpage');var page = webPage.create();page.sendEvent('keypress', page.event.key.A, null, null, 0x02000000 | 0x08000000);
setContent
var webPage = require('webpage');var page = webPage.create();var expectedContent = '<html><body><div>Test div</div></body></html>';var expectedLocation = 'http://www.phantomjs.org/';page.setContent(expectedContent, expectedLocation);
stop
switchToChildFrame
switchToFocusedFrame
switchToFrame
switchToMainFrame
switchToParentFrame
uploadFile
var webPage = require('webpage');var page = webPage.create();page.uploadFile('input[name=image]', '/path/to/some/photo.jpg');
Callback Triggers
closing(page)initialized()javaScriptAlertSent(message)javaScriptConsoleMessageSent(message)loadFinished(status)loadStarted()navigationRequested(url, navigationType, navigationLocked, isMainFrame)rawPageCreated(page)resourceError(resource)resourceReceived(request)resourceRequested(resource)urlChanged(url)
onAlert
var webPage = require('webpage');var page = webPage.create();page.onAlert = function(msg) { console.log('ALERT: ' + msg);};
onCallback
onClosing
var webPage = require('webpage');var page = webPage.create();page.onClosing = function(closingPage) { console.log('The page is closing! URL: ' + closingPage.url);};
onConfirm
var webPage = require('webpage');var page = webPage.create();page.onConfirm = function(msg) { console.log('CONFIRM: ' + msg); return true; // `true` === pressing the "OK" button, `false` === pressing the "Cancel" button};
onConsoleMessage
var webPage = require('webpage');var page = webPage.create();page.onConsoleMessage = function(msg, lineNum, sourceId) { console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');};
onError
var webPage = require('webpage');var page = webPage.create();page.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'));};
onFilePicker
var webPage = require('webpage');var page = webPage.create();var system = require('system');page.onFilePicker = function(oldFile) { if (system.os.name === 'windows') { return 'C:\\Windows\\System32\\drivers\\etc\\hosts'; } return '/etc/hosts';};
onInitialized
var webPage = require('webpage');var page = webPage.create();page.onInitialized = function() { page.evaluate(function() { document.addEventListener('DOMContentLoaded', function() { console.log('DOM content has loaded.'); }, false); });};
onLoadFinished
var webPage = require('webpage');var page = webPage.create();page.onLoadFinished = function(status) { console.log('Status: ' + status); // Do other things here...};
onLoadStarted
var webPage = require('webpage');var page = webPage.create();page.onLoadStarted = function() { var currentUrl = page.evaluate(function() { return window.location.href; }); console.log('Current page ' + currentUrl + ' will be gone...'); console.log('Now loading a new page...');};
onNavigationRequested
var webPage = require('webpage');var page = webPage.create();page.onNavigationRequested = function(url, type, willNavigate, main) { console.log('Trying to navigate to: ' + url); console.log('Caused by: ' + type); console.log('Will actually navigate: ' + willNavigate); console.log('Sent from the page\'s main frame: ' + main);}
onPageCreated
var webPage = require('webpage');var page = webPage.create();page.onPageCreated = function(newPage) { console.log('A new child page was created! Its requested URL is not yet available, though.'); // Decorate newPage.onClosing = function(closingPage) { console.log('A child page is closing: ' + closingPage.url); };};
onPrompt
var webPage = require('webpage');var page = webPage.create();page.onPrompt = function(msg, defaultVal) { if (msg === "What's your name?") { return 'PhantomJS'; } return defaultVal;};
onResourceError
var webPage = require('webpage');var page = webPage.create();page.onResourceError = function(resourceError) { console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')'); console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);};
onResourceReceived
var webPage = require('webpage');var page = webPage.create();page.onResourceReceived = function(response) { console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));};
onResourceRequested
var webPage = require('webpage');var page = webPage.create();page.onResourceRequested = function(requestData, networkRequest) { console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData));};
var webPage = require('webpage');var page = webPage.create();page.onResourceRequested = function(requestData, networkRequest) { var match = requestData.url.match(/wordfamily.js/g); if (match != null) { console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData)); // newWordFamily.js is an alternative implementation of wordFamily.js // and is available in local path networkRequest.changeUrl('newWordFamily.js'); }};
onResourceTimeout
var webPage = require('webpage');var page = webPage.create();page.onResourceTimeout = function(request) { console.log('Response (#' + request.id + '): ' + JSON.stringify(request));};
onUrlChanged
var webPage = require('webpage');var page = webPage.create();page.onUrlChanged = function(targetUrl) { console.log('New URL: ' + targetUrl);};
阅读全文
0 0
- PhantomJS API 第二篇
- 【phantomjs系列】Phantomjs Api介绍
- PhantomJS核心API
- PhantomJS API 第一篇
- jsoncpp第二篇------API
- CasperJS API 第二篇
- selenium添加phantomjs的js API接口
- NumPy详细API第二篇
- 第二篇:使用API网关
- phantomjs
- phantomjs
- phantomjs
- PhantomJS
- PhantomJS
- phantomjs
- phantomjs
- PhantomJS
- phantomjs
- MySQL5.6.37无法插入中文怎么办?看这里
- Charles Https 请求设置(Mac)
- Spring MVC 入门--Hello World
- QT多窗口语言动态切换
- .Collection和Collections的区别
- PhantomJS API 第二篇
- 彻底理解ThreadLocal
- jz2440开发板NFS配置
- 数组中的逆序对
- Bitcoin Mempool
- 不能错过的excel的几个操作技巧,否则你就后悔一生!
- mysql datetime 计算相隔时间
- zabbix3.4.1 通过orabbix监控oracle数据库
- java test2