1.1.0 • Published 7 years ago

chrome-tab v1.1.0

Weekly downloads
3
License
Public domain
Repository
github
Last release
7 years ago

chrome-tab

Sugar for Chrome's remote debugging protocol.

Why

Phantom's cool but it's hard to get your hands on a binary. Also why not just use a real browser?

How

JSON-RPC over a WebSocket. This is the same interface devtools uses to talk to Chrome - check out the API here.

Example

var Tab = require('./')
var Emitter = require('events')

var tab = new Tab()

process.on('SIGINT', () => {
  tab.close(process.exit)
})

tab.open(err => {
  if (err) throw err

  var events = new Emitter()

  // use rpc-engine's default method to catch any incoming notifications
  tab.defaultMethod = (name, params) => {
    events.emit(name, params)
  }

  // open the Page and Network notification firehoses
  tab.call('Page.enable', err => {})
  tab.call('Network.enable', err => {})

  // wait for Page.frameNavigated
  events.once('Page.frameNavigated', (params) => {
    console.log('Page.frameNavigated', params)

    // use Runtime.execute to run some js to dump the document's outerHTML
    tab.call('Runtime.evaluate', {
      expression: 'document.documentElement.outerHTML',
      returnByValue: true
    }, (err, result) => {
      console.log(result.result.value)
    })
  })

  tab.call('Page.navigate', {
    url: 'https://github.com/GoogleChrome/chrome-app-samples/tree/master/samples/websocket-server'
  }, err => {})
})

License

Public domain