<Please Help> Building simple framework

Hi All,

Can someone help me on this. Currently i’m building simple mobile automation framework but facing this issue since last week. Only able to call the application and suddently stuck at the 1st screen.

Below are the codes and logs for reference :

package test.java.com.android.appiumMpayWallet.scenarios;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import test.java.com.android.appiumMpayWallet.screens.*;

public class AppiumTest extends AndroidSetup {

@BeforeClass
public static void setUp() throws Exception {
	prepareAndroidForAppium();
	System.out.println("driver" + driver);
}

@AfterClass
public static void tearDown() throws Exception {
	driver.quit();
}

@Test
public void clickNextOnSplashScreen() throws Exception {
	
	new SplashScreen(driver).waitForVisibilityOf(By.className("android.widget.ImageButton"));
	new SplashScreen(driver).waitForClickabilityOf(By.className("android.widget.ImageButton"));
	new SplashScreen(driver).introScreen();
	
	System.out.println("driver" + driver);
}

}

package test.java.com.android.appiumMpayWallet.scenarios;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.MalformedURLException;
import java.net.URL;

public class AndroidSetup {

protected static AndroidDriver<WebElement> driver;

protected static void prepareAndroidForAppium() throws MalformedURLException {
	
	//Create objects of Desired capabilities class
	DesiredCapabilities capabilities = new DesiredCapabilities();
	//Set device name using capabilities
	capabilities.setCapability("deviceName", "Android SDK built for x86");
	//Set browser name
	capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "Android");
	//Set android version
	capabilities.setCapability(MobileCapabilityType.VERSION, "4.2.2");
	//Set android platform
	capabilities.setCapability("platformName", "Android");
	//Set android package capability name
	capabilities.setCapability("appPackage", "mpay.apps.mpaywallet");
	//Set app launch activity
	capabilities.setCapability("appActivity", ".MainActivity");
	//Set Android driver to launch app with appium server
	driver = new AndroidDriver<WebElement>(new URL("http://0.0.0.0:4723/wd/hub"),capabilities);
	System.out.println("driver" + driver);
}

}

package test.java.com.android.appiumMpayWallet.screens;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;

import io.appium.java_client.android.AndroidDriver;
import test.java.com.android.appiumMpayWallet.uiFramework.GenericMethods;

public class SplashScreen extends GenericMethods {

public SplashScreen(AndroidDriver<WebElement> driver) {
	super(driver);
	// TODO Auto-generated constructor stub
}

public SplashScreen introScreen() {

	By firstScreen = By.className("android.widget.ImageButton");
	By secondScreen = By.className("android.widget.ImageButton");
	By thirdScreen = By.className("android.widget.ImageButton");
	
	//Click next button on 1st splash screen
	driver.findElement(firstScreen).click();
	
	//Click next button on 1st splash screen
	driver.findElement(secondScreen).click();
			
	//Click next button on 1st splash screen
	driver.findElement(thirdScreen).click();
	
	try {
		Thread.sleep(3000);
	} catch (InterruptedException e) {
		Thread.currentThread().interrupt();
	}

	return new SplashScreen(driver);
}

}

package test.java.com.android.appiumMpayWallet.uiFramework;

import java.util.HashMap;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.RemoteWebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import io.appium.java_client.android.AndroidDriver;

public class GenericMethods {

protected static AndroidDriver driver;
 
 String app_package_name = "mpay.apps.mpaywallet";
 
 public GenericMethods(AndroidDriver driver) {
 
	 this.driver = driver;
 }
 
 public void waitForVisibilityOf(By locator) {
	
	 WebDriverWait wait = new WebDriverWait(driver, 10);
	 wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
 
 }
 
 public void waitForClickabilityOf(By locator) {
	 
	 WebDriverWait wait = new WebDriverWait(driver, 10);
	 wait.until(ExpectedConditions.elementToBeClickable(locator));
	 
 }
 
 public void scrollPageUp() {
 
	 JavascriptExecutor js = (JavascriptExecutor) driver;
	 HashMap<String, Double> swipeObject = new HashMap<String, Double>();
	 swipeObject.put("startX", 0.50);
	 swipeObject.put("startY", 0.95);
	 swipeObject.put("endX", 0.50);
	 swipeObject.put("endY", 0.01);
	 swipeObject.put("duration", 3.0);
	 js.executeScript("mobile: swipe", swipeObject);
 }
 
 public void swipeLeftToRight() {
	 
	 JavascriptExecutor js = (JavascriptExecutor) driver;
	 HashMap<String, Double> swipeObject = new HashMap<String, Double>();
	 swipeObject.put("startX", 0.01);
	 swipeObject.put("startY", 0.5);
	 swipeObject.put("endX", 0.9);
	 swipeObject.put("endY", 0.6);
	 swipeObject.put("duration", 3.0);
	 js.executeScript("mobile: swipe", swipeObject);
 }
 
 public void swipeRightToLeft() {
 
	 JavascriptExecutor js = (JavascriptExecutor) driver;
	 HashMap<String, Double> swipeObject = new HashMap<String, Double>();
	 swipeObject.put("startX", 0.9);
	 swipeObject.put("startY", 0.5);
	 swipeObject.put("endX", 0.01);
	 swipeObject.put("endY", 0.5);
	 swipeObject.put("duration", 3.0);
	 js.executeScript("mobile: swipe", swipeObject);
 }
 
 public void swipeFirstCarouselFromRightToLeft() {
 
	 JavascriptExecutor js = (JavascriptExecutor) driver;
	 HashMap<String, Double> swipeObject = new HashMap<String, Double>();
	 swipeObject.put("startX", 0.9);
	 swipeObject.put("startY", 0.2);
	 swipeObject.put("endX", 0.01);
	 swipeObject.put("endY", 0.2);
	 swipeObject.put("duration", 3.0);
	 js.executeScript("mobile: swipe", swipeObject);
 }
 
 public void performTapAction(WebElement elementToTap) {
	 
	 JavascriptExecutor js = (JavascriptExecutor) driver;
	 HashMap<String, Double> tapObject = new HashMap<String, Double>();
	 tapObject.put("x", (double) 360); // in pixels from left
	 tapObject.put("y", (double) 170); // in pixels from top
	 tapObject.put("element", Double.valueOf(((RemoteWebElement) elementToTap).getId()));
	 js.executeScript("mobile: tap", tapObject);
 }
 
 // Accepts only numbers (key codes 7-16) and lower and upper case letters (key codes 29-54)
 // Key code 66 is <Enter>
 public void enterTextInPasswordField(String strTextToEnter) {
 
	 int intCounter, intKey;
	 for (intCounter = 0; intCounter < strTextToEnter.length(); intCounter++) {
		 intKey = (int) strTextToEnter.charAt(intCounter);
		 if (intKey > 47 && intKey < 58) {
			 intKey = intKey - 41;
			 driver.pressKeyCode(intKey);
 }
		 
		 else if (intKey > 64 && intKey < 91) {
			 intKey = intKey - 36;
			 driver.pressKeyCode(intKey, 1);
		 }

		 else if (intKey > 96 && intKey < 123) {
			 intKey = intKey - 68;
			 driver.pressKeyCode(intKey);
		 }
	 }
 
	 driver.pressKeyCode(66);
 	}

}

Log:

[Appium] Welcome to Appium v1.6.4
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
[HTTP] --> POST /wd/hub/session {“capabilities”:[{“desiredCapabilities”:{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”}},{“requiredCapabilities”:{}}],“desiredCapabilities”:{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”},“requiredCapabilities”:{}}
[MJSONWP] Calling AppiumDriver.createSession() with args: [{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”},{},[{“desiredCapabilities”:{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”}},{“requiredCapabilities”:{}}],null,null]
[BaseDriver] Event ‘newSessionRequested’ logged at 1495100800882 (17:46:40 GMT+0800 (Malay Peninsula Standard Time))
[Appium] Creating new AndroidDriver (v1.17.1) session
[Appium] Capabilities:
[Appium] appPackage: ‘mpay.apps.mpaywallet’
[Appium] appActivity: ‘.MainActivity’
[Appium] browserName: ‘Android’
[Appium] platformName: ‘Android’
[Appium] deviceName: ‘Android SDK built for x86’
[Appium] version: ‘4.2.2’
[AndroidDriver] AndroidDriver version: 1.17.1
[BaseDriver] The following capabilities were provided, but are not recognized by appium: version.
[BaseDriver] Session created with session id: fcc730d3-1cb8-49a4-be1a-89c78d949f8d
[AndroidDriver] Getting Java version
[AndroidDriver] Java version is: 1.8.0_131
[ADB] Checking whether adb is present
[ADB] Using adb.exe from C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe
[AndroidDriver] Retrieving device list
[ADB] Trying to find a connected android device
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[AndroidDriver] Using device: emulator-5554
[ADB] Checking whether adb is present
[ADB] Using adb.exe from C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe
[ADB] Setting device id to emulator-5554
[AndroidDriver] App file was not listed, instead we’re going to run mpay.apps.mpaywallet directly on the device
[AndroidDriver] Checking whether package is present on the device
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“pm”,“list”,“packages”,“mpay.apps.mpaywallet”]
[AndroidDriver] Starting Android session
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“wait-for-device”]
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“echo”,“ping”]
[Logcat] Starting logcat capture
[AndroidDriver] Pushing settings apk to device…
[ADB] Getting install status for io.appium.settings
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“pm”,“list”,“packages”,“io.appium.settings”]
[ADB] App is installed
[ADB] Getting package info for io.appium.settings
[ADB] Getting connected devices…
[ADB] Checking whether aapt is present
[ADB] Using aapt.exe from C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\build-tools\23.0.2\aapt.exe
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“dumpsys”,“package”,“io.appium.settings”]
[ADB] Cannot read version codes of C:\Users\azrul.nizam\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\io.appium.settings\app\build\outputs\apk\settings_apk-debug.apk and/or io.appium.settings. Assuming correct app version is already installed
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“getprop”,“ro.build.version.sdk”]
[ADB] Device API level: 17
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“dumpsys”,“package”,“io.appium.settings”]
[AndroidDriver] Pushing unlock helper app to device…
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“install”,“C:\Users\azrul.nizam\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-unlock\bin\unlock_apk-debug.apk”]
[ADB] Device API level: 17
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“settings”,“put”,“secure”,“mock_location”,“1”]
[ADB] Getting device platform version
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“getprop”,“ro.build.version.release”]
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“wm”,“size”]
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“getprop”,“ro.product.model”]
[ADB] Current device property ‘ro.product.model’: Android SDK built for x86
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“getprop”,“ro.product.manufacturer”]
[ADB] Current device property ‘ro.product.manufacturer’: unknown
[AndroidDriver] No app sent in, not parsing package/activity
[AndroidDriver] No app capability. Assuming it is already on the device
[AndroidDriver] Running fast reset (stop and clear)
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“am”,“force-stop”,“mpay.apps.mpaywallet”]
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“pm”,“clear”,“mpay.apps.mpaywallet”]
[AndroidBootstrap] Watching for bootstrap disconnect
[ADB] Forwarding system: 4724 to device: 4724
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“forward”,“tcp:4724”,“tcp:4724”]
[UiAutomator] Starting UiAutomator
[UiAutomator] Moving to state ‘starting’
[UiAutomator] Parsing uiautomator jar
[UiAutomator] Found jar name: ‘AppiumBootstrap.jar’
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“push”,“C:\Users\azrul.nizam\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-bootstrap\bootstrap\bin\AppiumBootstrap.jar”,"/data/local/tmp/"]
[ADB] Attempting to kill all uiautomator processes
[ADB] Getting all processes with uiautomator
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“ps”]
[ADB] No uiautomator process found to kill, continuing…
[UiAutomator] Starting UIAutomator
[ADB] Creating ADB subprocess with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“uiautomator”,“runtest”,“AppiumBootstrap.jar”,"-c",“io.appium.android.bootstrap.Bootstrap”,"-e",“pkg”,“mpay.apps.mpaywallet”,"-e",“disableAndroidWatchers”,false,"-e",“acceptSslCerts”,false]
[UiAutomator] Moving to state ‘online’
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] json loading complete.
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Registered crash watchers.
[AndroidBootstrap] Android bootstrap socket is now connected
[ADB] Getting connected devices…
[AndroidBootstrap] [BOOTSTRAP LOG] [debug] Client connected
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“dumpsys”,“window”]
[AndroidDriver] Screen already unlocked, doing nothing
[ADB] Device API level: 17
[ADB] Getting connected devices…
[ADB] 1 device(s) connected
[ADB] Running ‘C:\Users\azrul.nizam\AppData\Local\Android\android-sdk\platform-tools\adb.exe’ with args: ["-P",5037,"-s",“emulator-5554”,“shell”,“am”,“start”,"-W","-n",“mpay.apps.mpaywallet/.MainActivity”,"-S"]
[Appium] New AndroidDriver session created successfully, session fcc730d3-1cb8-49a4-be1a-89c78d949f8d added to master session list
[BaseDriver] Event ‘newSessionStarted’ logged at 1495100806282 (17:46:46 GMT+0800 (Malay Peninsula Standard Time))
[MJSONWP] Responding to client with driver.createSession() result: {“platform”:“LINUX”,“webStorageEnabled”:false,“takesScreenshot”:true,“javascriptEnabled”:true,“databaseEnabled”:false,“networkConnectionEnabled”:true,“locationContextEnabled”:false,“warnings”:{},“desired”:{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”},“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“emulator-5554”,“version”:“4.2.2”,“deviceUDID”:“emulator-5554”,“platformVersion”:“4.2.2”,“deviceScreenSize”:null,“deviceModel”:“Android SDK built for x86”,“deviceManufacturer”:“unknown”}
[HTTP] <-- POST /wd/hub/session 200 5404 ms - 767
[HTTP] --> GET /wd/hub/session/fcc730d3-1cb8-49a4-be1a-89c78d949f8d {}
[MJSONWP] Calling AppiumDriver.getSession() with args: [“fcc730d3-1cb8-49a4-be1a-89c78d949f8d”]
[MJSONWP] Responding to client with driver.getSession() result: {“platform”:“LINUX”,“webStorageEnabled”:false,“takesScreenshot”:true,“javascriptEnabled”:true,“databaseEnabled”:false,“networkConnectionEnabled”:true,“locationContextEnabled”:false,“warnings”:{},“desired”:{“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“Android SDK built for x86”,“version”:“4.2.2”},“appPackage”:“mpay.apps.mpaywallet”,“appActivity”:".MainActivity",“browserName”:“Android”,“platformName”:“Android”,“deviceName”:“emulator-5554”,“version”:“4.2.2”,“deviceUDID”:“emulator-5554”,“platformVersion”:“4.2.2”,“deviceScreenSize”:null,“deviceModel”:“Android SDK built for x86”,“deviceManufacturer”:“unknown”}

Failure Trace:

java.lang.NullPointerException: null value in entry: deviceScreenSize=null
at com.google.common.collect.CollectPreconditions.checkEntryNotNull(CollectPreconditions.java:34)
at com.google.common.collect.ImmutableMapEntry.(ImmutableMapEntry.java:49)
at com.google.common.collect.ImmutableMap.entryOf(ImmutableMap.java:172)
at com.google.common.collect.ImmutableMap$Builder.put(ImmutableMap.java:248)
at com.google.common.collect.ImmutableMap$Builder.put(ImmutableMap.java:263)
at com.google.common.collect.ImmutableMap$Builder.putAll(ImmutableMap.java:291)
at com.google.common.collect.ImmutableMap$Builder.putAll(ImmutableMap.java:274)
at io.appium.java_client.HasSessionDetails.getSessionDetails(HasSessionDetails.java:38)
at io.appium.java_client.HasSessionDetails.getSessionDetail(HasSessionDetails.java:42)
at io.appium.java_client.HasSessionDetails.getPlatformName(HasSessionDetails.java:46)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:100)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:112)
at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:73)
at test.java.com.android.appiumMpayWallet.scenarios.AndroidSetup.prepareAndroidForAppium(AndroidSetup.java:33)
at test.java.com.android.appiumMpayWallet.scenarios.AppiumTest.setUp(AppiumTest.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

java.lang.NullPointerException
at test.java.com.android.appiumMpayWallet.scenarios.AppiumTest.tearDown(AppiumTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

@eszroul fix structure with PageFactory PageObjectModel issues

Hi Aleksei,

the explanation not really clear. Im still facing the issue. Do you mind to
share simple framework for referance.

regards

Hey Eszroul,
Use this link as a reference to create setup for your project using Appium
http://www.connecttokc.com/first-appium-project/