Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

34

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

34

Yet another Selenium WebDriver library

  • 0.0.2
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
9
decreased by-25%
Maintainers
1
Weekly downloads
 
Created
Source

34.js

Yet another Selenium WebDriver library for Node...

(Warning: This is a design doc... There's no code, yet! But when it lands, it'll most likely be based on webdriver-http-sync.

Goals:

  • JavaScripty - This should feel like a JavaScript API, not a port from Java
  • For automating web browsers: desktop and mobile
  • Synchronous API - Async makes no sense for shell scripts or user interface test automation.
  • Try to reduce locator strategy proliferation. Use CSS selectors as much as possible.
  • Optimize for interactive exploration at the console.
  • Yeah:
    • Pithy property names FTW
    • Easy discovery of properties via tab completion in the console.
    • e.g. thing.frobulate
  • Boo:
    • e.g. driver.window().getFrobulateStatusOfThing(By.whyAmIStillTyping())

Non-Goals:

  • Automating non-web native apps. (Although I hope this is temporary!)

Install

npm install 34

Example Usage

Driver = require('34').Driver
se = new Driver()

API

// Navigation
// ----------

// Open a URL
se.url = 'http://google.com'
se.open = function(url) { return this.url = url }
se.go = se.open

se.back()
se.forward()
se.refresh()

// Close current window
se.close()

// End current session
se.quit()


// Frame Navigation

// Switch focus to frame
se('#IdOfSomeFrame').focus()

// Switch focus to parent frame
se.parent()


// Window Navigation

// Switch focus to window
se.window('nameOfWindow')



// Interrogation
// -------------

// Driver
se.url
se.title
se.source

// Server status
se.status

// Id of current session
se.session

// List of all sesions
se.sessions

// Handle id of current window
se.window

// List of all window handle ids
se.windows

// Id of active (focused) element
se.activeElement

// Find Element
e = se('#id')
// Find All elements
es = se('*[#id]')

// By name:
se('[name="theName"]')

// By id:
se('#theId')

// By tag name:
// all links
se('a')

// Element
e.attribute('name')
e.css('propname')
e.displayed
e.enabled
e.location
e.locationInView
e.name
e.selected
e.size
e.tag
e.text

// Find child element
e.find('#id')

// Find all child elements
e.find('#id')

// Alerts
se.alert.text


// Manipulation
// ------------

// Driver

// Keyboard
se.keys()
se.keyDown()
se.keyUp()

// Mouse
se.mouse.click()
se.mouse.doubleClick()
se.mouse.down()
se.mouse.moveBy(20,100)
se.mouse.moveTo(0,0
se.mouse.up()

// Slim Jim (https://www.youtube.com/watch?v=KbneMYYI78Q)
se.touch.down()
se.touch.move()
se.touch.tap()
se.touch.up()

// Execute JavaScript
se.execute()
se.executeAsync()

// Take a Screenshot
se.screenshot()

// Element
e.clear()
e.click()
e.keys()
e.submit()

// Alerts
se.alert.accept()
se.alert.dismiss()
se.alert.focus()
se.alert.keys()



// Feng Shui
// ---------

// Get size of current window
se.size

// Set size of current window
se.size = [200, 200]

// Get position of current window
se.position

// Get position of current window
se.position = [200,200]

// Maximize size of current window
se.maximize()

// (For mobile...)
se.orientation
se.orientation = LANDSCAPE
se.orientation = PORTRAIT



// Synchronisation
// ---------------
se.timeouts.implicitWait = 10000
se.timeouts.pageLoad = 10000
se.timeouts.asyncScript = 10000

Keywords

FAQs

Package last updated on 15 Jul 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc