Appium 2.0

Why Appium 2.0?

 

Appium Plugins

 

Demo

 

Agenda

Appium Plugin

Android Architecture

W3C

Server Request

Server

Client

Appium Server

Driver(espresso)

Server Request

Plugins

WDA

What is an Appium 2.0 Plugin

  • Update the Appium server object before it starts listening for requests

 

  • Plugins add arbitrary functionality that executes before or after the actual Appium commands.

 

  • Plugins alter the Appium server to introduce new commands and distribute it.

How to build your own plugin?

LIVE CODING

  • Create new routes

  • Override/modify existing Appium Methods

  "dependencies": {
    "@appium/base-plugin": "^1.6.4"
  },  
  "appium": {
    "pluginName": "<plugin name>",
    "mainClass": "<class name>"
  },
  
export default class AppiumPlugin extends BasePlugin {

 async createSession(next, driver, jwpDesCaps, jwpReqCaps, caps) {
   log.info('Building my new appium plugin');
   .....
   await next();
   }
}

Step 1

Step 2

static newMethodMap = {
    '/session/:sessionId/fake_data': {
      GET: {command: 'getFakeSessionData'}
    },
};


async getFakeSessionData (next, driver) {
    await B.delay(1);
    return driver.fakeSessionData || null;
}

Adding new routes

driver.getFakeData()

Server

Client

appium plugin install --source=local <path to plugin>
appium plugin install --source=npm appium-wait-plugin
appium --plugins=element-wait

Plugin Installation

Plugin Activation

Plugins

Available Plugins

Copy of Appium 2.0

By Sai Krishna

Copy of Appium 2.0

  • 512