Appium 2.0

Hello,

I'm Sai Krishna

Principal Consultant

@saikrisv

saikrishna321

I'm Srinivasan

Lead Consultant

@srinivasanskr

srinivasanTarget

I'm Srinivasan

Lead Consultant

@srinivasanskr

srinivasanTarget

Why Appium 2.0?

 

Appium Plugins

 

Demo

 

Agenda

Appium Plugin

Android Architecture

W3C

Server Request

Server

Client

Appium Server

Driver(espresso)

Server Request

Plugins

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