NuGet Package Manager

    34

    0.0.2 • Public • Published

    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
    

    Install

    npm i 34

    DownloadsWeekly Downloads

    11

    Version

    0.0.2

    License

    MIT

    Last publish

    Collaborators

    • hugs