node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

phantom-promise

phantom-promise

A PhantomJS bridge with a promise based api.

npm version Travis

Installation

npm install phantom-promise

Usage

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 call window.callPhantom(result) in order to return.
  • arg - An argument to evaluate fn with. 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});