phantom-promise v0.1.9
phantom-promise
A PhantomJS bridge with a promise based api.
Installation
npm install phantom-promiseUsage
var Phantom = require('phantom-promise');
var phantom = Phantom.create();
phantom.initialize()
.then(() => phantom.createPage())
.then((page) => {
var pageFunction = function () {
var result = 'Hello from Phantom.';
window.callPhantom(result);
};
return page.evaluate(pageFunction);
})
.then((result) => {
console.log(result); //=> Hello from Phantom.
phantom.shutdown();
});API
Phantom
Page
Phantom
create ( )
Returns an instance of Phantom.
Example
var Phantom = require('phantom-promise');
var phantom = Phantom.create();createPage ( )
Creates a Web Page in PhantomJs. Returns a Promise that is fulfilled with an instance of Page.
Example
phantom.createPage()
.then((page) => {
// ...
})initialize ( )
Initializes the Phantom instance. Returns a Promise that is fulfilled once the initialization is complete.
This must be called before the instance can be used.
Example
phantom.initialize()
.then(() => {
// ...
});shutdown ( )
Shuts down the phantom instance. Once this has been called, the instance is no longer operable unless it is re-initialized.
Example
phantom.shutdown();Page
close ( )
Closes the page. Once this has been called, the page instance can no longer be used.
Example
page.close();evaluate ( fn ,arg )
Evaluates a function on the page. Returns a Promise that is fulfilled with the return value of the function.
Arguments
fn- The function to evaluate on the page. This function must callwindow.callPhantom(result)in order to return.arg- An argument to evaluatefnwith. This argument must be JSON-serializable (i.e. Closures, functions, DOM nodes, etc. will not work!).
Example
var pageFunction = function (arg) {
window.callPhantom(arg);
};
var arg = 'Hello from Phantom.';
page.evaluate(pageFunction, arg)
.then((result) => {
console.log(result); //=> 'Hello from Phantom.'
});get ( property )
Returns a Promise that is fulfilled with the requested page property.
Arguments
property- A string determining the property to return.
Example
page.get('viewportSize')
.then((viewportSize) => {
// ...
});injectJs ( paths )
Injects external scripts into the page. The scripts are loaded in the order they are supplied so that dependencies can be met.
Arguments
paths- A path or an array of paths to the script files to be injected.
Example
page.injectJs('path/to/external/script.js');set ( property , value )
Sets a page property. Returns a promise that is fulfilled with the result.
Arguments
property- A string determining the property to set.value- The value to apply.
Example
page.set('viewportSize', {height: 768, width: 1024});