node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

sailbot

sailbot

For simple web automation.

  • Keeps selenium's async nature.
  • Can open browser windows, let them stay opened and reattach to that window when running a separate script.
  • Multiple concurrent/independent browsers.
  • Seamless support working with sites with iframes.
  • Waits until elements are loaded/visible (default) or loaded/hidden to perform actions.
  • Only chrome supported.

Installation

npm install sailbot

Usage

// Example 1 
 
let Sailbot = require('sailbot')
let Async = require('bluebird').coroutine
 
let go = Sailbot()
 
let func = Async(function* () {
 
    go.to('http://google.com')
    .get('#lst-ib').clear().write('wikipedia')
 
    let titles = yield go.getAll('h3 a').text()
    let links = yield go.getAll('h3 a').attribute('href')
 
    console.log(titles, links)
 
    go.quit()
})
 
func()
 
 
// Example 2 
 
let options = {   // defaults: 
    timeout: 30,
    port: 7055,
    dev: 'dev',   // pass this to keep a window opened (nodejs process running). 
    id: 'id here'  // the previous process will console the id. Pass this in any new script. 
}
 
let go = Sailbot(options)
let go2 = Sailbot()
 
let fn = Async(function* (val) {
 
    go.to('http://somesite.com')
    .switchTo(['frame1', 'child_frame'])
    .get('#id1').click()
    .get('#input').clear().write('Hello')  // almost all methods are chainable 
 
    go2.to('http://somesite.com')  // this will run in parallel/separate browser window 
 
    let y = yield go.getAll('#editlistinglink').attribute('value')  // returns array 
    console.log(y)
    go.sleep(5000)
 
    go2.get('cssSelector').click()  // other stuff with go2 browser 
 
    go.waitFor('#element').isVisible()
    .waitFor('#element2').isFound()
    go.driver.sleep(1000) // can use any native selenium functionality 
    go.quit()
 
})
 
fn()

Full Docs