This site is in read only mode. Please continue to browse, but replying, likes, and other actions are disabled for now.
61 / 137
Sep 2015

Hi @RISHI_KHANNA ,
Well tried, Make sure that Appium server is running on Mac with 4728 port as you're mentioned in NodeConfig2.json file.

Note : I've observed there is no need of Selenium server to interact with Appium. Just start Appium on your MAC OS X with port num (e.g. 4728) and give URL as http://192.xxx.x.xxx:4728/wd/hub4 and run your test from any machine it will listen on port number and executes your tests..Have a try,Good Luck. :smile:

@bhaskar

I tried after changing the URL to my Windows ip where my other node is located and my script are kept but again it is throwing an error :

FAILED: test2("4df742b317683077", "samsung GT-N7100", "4.3")

org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Device 4df742b317683077 was not in the list of connected devices) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 8.52 seconds

Sceanario is: My test script and one node is located in Windows machine from where I m triggering the job and my second node is located in MAC machine.

So, in nodeconfig file for MAC my URL and hub will be of Window machine?

@bhaskar:
Also, how to pass build information?
Like my capabilities are set in Windows machine where I have defined my build path and name and I m triggering it from windows to run on MAC. How to pass these info?

1 month later

Hi all @Appium_Master @rgonalo @bhaskar @Arvind_Patel @Hassan_Radi

I am able to install and launch the app in both the devices connected but script is being executed only on one.

NODE 1:
{
"capabilities":
[
{
"browserName":"android",
"version":"4.4.2",
"maxInstances":5,
"platform":"ANDROID",
"deviceName": "3204da2a5075c0b5"
}
],
"configuration":
{
"nodeTimeout":120,
"cleanUpCycle":2000,
"timeout":10000,
"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://xxxx:5566/wd/hub",
"maxSession":2,
"port":5566,
"register":true,
"registerCycle":5000,
"hub": "xxxx:4441/grid/register",
"hubPort": 4441,
"hubHost": "xxxx",
"role":"node"
}
}

NODE 2:
{
"capabilities":
[
{
"browserName":"android",
"version":"4.4.2",
"maxInstances":5,
"platform":"ANDROID",
"deviceName": "8a2d363"
}
],
"configuration":
{
"nodeTimeout":120,
"cleanUpCycle":2000,
"timeout":10000,
"proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://xxxx:5577/wd/hub",
"maxSession":2,
"port":5577,
"register":true,
"registerCycle": 5000,
"hub": "xxxx:4441/grid/register",
"hubPort": 4441,
"hubHost": "xxxx",
"role":"node"
}
}

I am passing device id as a parameter from testng.xml file

Script:
public class appGrid {
WebDriver driver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();

@Parameters(value={"device_id1","device_id2","ApplicationPath"})
@BeforeTest
public void atStart(@Optional("nnn")String device_id1,String device_id2, String ApplicationPath) throws MalformedURLException, InterruptedException
{    

    //capabilities=DesiredCapabilities.android();

    capabilities.setCapability("automationName", "Appium");
    capabilities.setCapability(CapabilityType.BROWSER_NAME,"android");
    capabilities.setCapability("platformVersion", "4.4.2");//Or//capabilities.setCapability(CapabilityType.VERSION, "4.1.2");
    capabilities.setCapability(CapabilityType.PLATFORM,"ANDROID");
    //capabilities.setCapability("platformName","ANDROID");//Or//capabilities.setCapability(CapabilityType.PLATFORM, "Android");
    capabilities.setCapability("app", ApplicationPath);
    capabilities.setCapability("appPackage", "com.app.android.staging"); //Replace with your app's package
    capabilities.setCapability("appActivity", "com.app.android.ui.TabActivity"); //Replace with app's Activity
    //setting new command timeout for selenium server
    capabilities.setCapability("newCommandTimeout", "2000000");//33.33 mins

    if("8a2d363".equalsIgnoreCase(device_id2))
    {
        System.out.println("in nexus: "+device_id2);
        //
        capabilities.setCapability("deviceName",device_id2);
        //capabilities.setCapability("udid","8a2d363");
        //capabilities.setCapability("deviceName","Micromax A311");
        capabilities.setCapability("sleep", "1000");

         try
            {
                driver = new AndroidDriver(new URL("http://xxxx:4441/wd/hub"), capabilities);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
    }

 if ("3204da2a5075c0b5".equalsIgnoreCase(device_id1))
    {
        System.out.println("in Samsung galaxy: "+device_id1);
        //
        capabilities.setCapability("deviceName", device_id1);
    //    capabilities.setCapability("udid", "3204da2a5075c0b5");
    //    capabilities.setCapability("deviceName","SM-N750");
        capabilities.setCapability("sleep", "15000");

         try
            {
                driver = new AndroidDriver(new URL("http://xxxx:4441/wd/hub"), capabilities);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }   
    }
}

I understand the driver mentioned 1st is overwriting the last one but If I mention the last one only out of IF block, I see the installation in only one device.

Really looking forward for help.
I have been struggling for implementing at last point from long time.

Thanks in advance ! :wink:

Hi @Nitin_Thite ,

  1. First of all this is not the better way to execute the multiple device execution parallel. Instead you can use different objects for AndroidDriver (or) use TestNG (parallel="tests").
  2. You've mentioned 4441 port number for both the devices. There should be n no.of Appium servers should be started for n n no.of devices with different port numbers. In your case 2 port numbers are required for 2 devices.

driver = new AndroidDriver(new URL("http://xxxx:4441/wd/hub"), capabilities);

driver = new AndroidDriver(new URL("http://xxxx:4441/wd/hub"), capabilities); //highlighted should be unique

Please do the needful and let us know !!!

Regards,
Bhaskar.

@bhaskar Thanks !
As you mentioned in point no 1:
I am using TestNG (parallel="tests") only in my textng.xml

For the point no 2:
I have tried using node port numbers while assigning url to driver.
I think you are saying like below:
driver = new AndroidDriver(new URL("http://xxxx:5566/wd/hub"), capabilities);
driver = new AndroidDriver(new URL("http://xxxx:5577/wd/hub"), capabilities);

As the port 4441 is hub port and rest are nodes 5566 and 5577

Ultimately only last driver is considered as previous is/are overwritten and the script gets executed on last one. (i.e. install app on both but executes on one)
I am mentioning hub port number because we load the tests to hub and then hub distributes it to nodes as per the properties set.Please correct me if I am wrong.

@bhaskar @Appium_Master @rgonalo @Arvind_Patel @jonahss Please share your thoughts.
Thanks in advance ! :smile:

Hi @Nitin_Thite,

Take a look at hub logs, you should have something like this:

  1. INFO org.openqa.grid.web.servlet.handler.RequestHandler - Got a request to create a new session: Capabilities [{browserName=android, ... }]
  2. INFO org.openqa.grid.internal.ProxySet - Available nodes: [http://...:5566, http://...:5577, ...]
  3. INFO org.openqa.grid.internal.BaseRemoteProxy - Trying to create a new session on node http://...:55661
  4. INFO org.openqa.grid.internal.BaseRemoteProxy - Node http://...:55661 has no matching capability
  5. INFO org.openqa.grid.internal.BaseRemoteProxy - Trying to create a new session on node http://...:5577
  6. INFO org.openqa.grid.internal.TestSlot - Trying to create a new session on test slot {seleniumProtocol=WebDriver, browserName=android, ... }

Line 4 occurs when requested capabilities (line 1) don't match with node capabilities and line 6 occurs when they match.

I think that in your case both requests match with both nodes, so the first node executes the tests in both cases. The hub uses only browserName, version, platform and applicationName capabilities to search the node, and these capabilities are equal in NODE 1 and NODE 2.

You are right @rgonalo :smile:
in the mean time I created 2 objects of driver and tried with success. But its not recommended.

@rgonalo @Appium_Master @bhaskar @Arvind_Patel @Hassan_Radi - Please share your thoughts.
1. Can we achieve parallel testing with one driver object only?
2. I am referring to device ports directly in the node url while assigning to driver, I think we should load our tests on hub. Please share your thoughts.

A code for reference would help a lot.

But my goal is to execute it parallel.

Looking forward for help.

Yes @Nitin_Thite,

  1. We're currently doing with only one driver object.
  2. Start two Appium servers with different port numbers and give them in TestNG xml file by parameterizing the values. (it will make easier).
  3. Call the same class file in both test tags as like below..!!

<test name="RunTests_On_Android_4.4 Moto G">
   <parameter name="app-apk" value="com.sample.apk"/>
   <parameter name="device-Name" value="Moto G"/>
   <parameter name="device-Version" value="5.0.2"/>
   <parameter name="device-url" value="http://0.0.0.0:4723/wd/hub"/>
   <parameter name="udid" value="xyzgvhkljh"/>

   <classes>
	<class name="com.test.Class1"/>
   </classes>
 </test> 

<test name="RunTests_On_Android_4.4 Samsung Galaxy">
   <parameter name="app-apk" value="com.sample.apk"/>
   <parameter name="device-Name" value="Galaxy S"/>
   <parameter name="device-Version" value="4.4"/>
   <parameter name="device-url" value="http://0.0.0.0:4724/wd/hub"/>
   <parameter name="udid" value="abcgvhkljh"/>

   <classes>
	<class name="com.test.Class2"/>
   </classes>
 </test>

Please let me know if you need any info.

Regards,
Bhaskar.

Thanks @bhaskar
Following is my xml: - for running only one test in both the devices::

<?xml version="1.0" encoding="UTF-8"?>










Script:
public class appGRID {

WebDriver driver = null;
WebDriver driver1 = null;
WebDriver driver2 = null;
WebDriver driver3 = null;
DesiredCapabilities capabilities = new DesiredCapabilities();

@Parameters(value={"device_id1","device_id2","ApplicationPath"})
@BeforeTest
public void atStart(@Optional("nnn")String device_id1,String device_id2,String ApplicationPath) throws MalformedURLException, InterruptedException
{    
    capabilities=DesiredCapabilities.android();        
    capabilities.setCapability("automationName", "Appium");
    capabilities.setCapability(CapabilityType.PLATFORM,"ANDROID");
    capabilities.setCapability("app", ApplicationPath);
    capabilities.setCapability("appPackage", "packg"); //Replace with your app's package
    capabilities.setCapability("appActivity", "app.ui.SplashActivity"); //Replace with app's Activity
    //setting new command timeout for selenium server
    capabilities.setCapability("newCommandTimeout", "2000000");//33.33 mins

 if ("3204da2a5075c0b5".equalsIgnoreCase(device_id1))
    {
        System.out.println("in Samsung galaxy: "+device_id1);
        //
        capabilities.setCapability("deviceName", device_id1);
        capabilities.setCapability("udid", device_id1);
        capabilities.setCapability(CapabilityType.BROWSER_NAME,"android");
        capabilities.setCapability("platformVersion", "4.4.2");//Or//capabilities.setCapability(CapabilityType.VERSION, "4.1.2");

        //capabilities.setCapability("applicationName",device_id1);

         try
            {
                driver = new AndroidDriver(new URL("http://xxxx:5566/wd/hub"), capabilities);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }

    }

 if("4d00c71c781e50eb".equalsIgnoreCase(device_id2))
    {
        System.out.println("in nexus: "+device_id2);
        //
        capabilities.setCapability("deviceName",device_id2);
        capabilities.setCapability("udid",device_id2);
        //capabilities.setCapability("applicationName",device_id2);
        capabilities.setCapability(CapabilityType.BROWSER_NAME,"chrome");
        capabilities.setCapability("platformVersion", "4.4");//Or//capabilities.setCapability(CapabilityType.VERSION, "4.1.2");


         try
            {
                driver = new AndroidDriver(new URL("http://xxxx:5577/wd/hub"), capabilities);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
    }
}

@Test
public void testCase() throws InterruptedException
    {
    for (int i=0;i<=2;)
    {
        if(i==0)
            driver=driver1;
        else (i==1)
            driver=driver2;

           ((AppiumDriver)driver).findElementByName("Create Account / Sign In").click();
           ((AppiumDriver)driver).findElementByName("I already have an account").click();
           ((AppiumDriver)driver).findElementById(packg:id/email").sendKeys("yahoo@yopmail.com");
           ((AppiumDriver)driver).findElementById("packg:id/password").sendKeys("12345678");
           ((AppiumDriver)driver).findElementById("packg:id/login").click();
           ((AppiumDriver)driver).findElementByName("Continue free trial").click();

    i++;
    }
}

I think I need to update the script only, but dont know how!!
Can you please guide?

Thanks in advance ! :smile:

Yeah..This is not required !!

  1. Just create a class and use TestNG @BeforeClass annotation, give DesiredCapabilities with specific to AndroidDriver using @Parameters (Those can override in TestNG.xml).
  2. Inside @Test write your script
  3. Call the class file in TestNG xml file as i was mentioned above.

Regards,
Bhaskar.

Ok @bhaskar,

Could you please share me the script code of @BeforeClass annotation for example?
That would help.

Thanks alot for quick replies !

@bhaskar @Appium_Master @rgonalo @Hassan_Radi @jonahss Could you please help me in parallel execution?

I would like to know "How we can assign multiple urls and different capabilities to a single driver object?"
As we are setting the capabilities as per the device.
If I have to do that I have to give port of HUB that will load the tests over hub and then distribute and apss on to respective nodes. BUT that is not happening as the test only executes over last mentioned device.

I am mentioning driver object and assigning the capabilities as well the url in each IF condition for devices. Which ultimately runs the script on the last assigned device.

A bit urgent for me. (You may mail me the scripts on thitenitin@gmail.com)
Thanks in advance ! :smile:

Eagerly waiting for replies.

Regards,
Nitin

You can run scripts in parallel by starting multiple appium servers on multiple ports.
But you should create a new Driver object for each device and each url, not try to put it all on the same driver object.

Hi,

Yes, I'm able to run with only one driver object.As i was mentioned in the following !!!

regards,
Bhaskar.

28 days later

Yes, Facebook has figured out how to do parallel iOS simulators. I've opened an issue on appium to adopt this new tool60.

Thanks for the reply !!
Looking forward to receive updates on this.

Thanks,
Bhaskar.

@bootstraponline i was able to spin up two iOS Simulators, from commandline can i tell appium to run against a specific UDID ??

Steps to get two simulators

  1. xcrun simctl create "mynewsimulator" "iPhone 6" "com.apple.CoreSimulator.SimRuntime.iOS-8-4"

  2. open -n /Applications/Xcode.app/Contents/Developer/Applications/iOS\ Simulator.app/ --args -CurrentDeviceUDID '0F3826F2-2C2A-47E2-869C-7CE043C12F81'

You will also need to provide 2 separate tmp directories

16 days later

@Hassan_Radi

package com.naukri.androidApp.TestSuite;

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

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

import GenericFunctionsLibrary.GenericFunctions;

import com.naukri.androidApp.Code.SplashScreen;
import com.naukri.androidApp.ConfigDetails.Config;


public class ParallelExecution01 extends Config{
	
	public AndroidDriver driver01;
	public AndroidDriver driver02;

	public void StartDriver01()
	{
		try {
			File file = new File("<apk path>");
			String appPath = file.getAbsolutePath();
			//G2
			driver01 = this.StartDriverAndroidApp01(appPath, appPackage, appActivity, "ZX1D64QFK6");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}


	@SuppressWarnings("null")
	public AndroidDriver StartDriverAndroidApp01(String appLocation, String appPackage, String appActivity, String deviceName) throws MalformedURLException{

		try{Thread.sleep(5000);}catch(Exception e){}
		appPackage = Config.appPackage;
		appActivity = Config.appActivity;
		DesiredCapabilities capabilities = new DesiredCapabilities();	

		ThreadLocal<AndroidDriver> threadDriver = null;
		
		//For device 1
		capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "ANDROID");
		capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "5.0.2");
		capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
		capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
		capabilities.setCapability(MobileCapabilityType.APP, appLocation);
		capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, appPackage);
		capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, appActivity);

		try {
			System.setProperty("webdriver.ie.driver", "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
			driver01 = new AndroidDriver(new URL("http://127.0.0.1:4444/wd/hub"), capabilities);
			
			threadDriver.set((AndroidDriver) driver01);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}  

		System.out.println("========driver after launching app========" + driver );
		driver01.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
		System.out.println("==========complete launchApp========");

		return threadDriver.get();   
	}

	
	
	
	public void StartDriver02()
	{
		try {
			File file = new File("<apk path>");
			String appPath = file.getAbsolutePath();
			//S3
			driver02 = this.StartDriverAndroidApp02(appPath, appPackage, appActivity, "4df707995bd4215b");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
	


	
	@SuppressWarnings("null")
	public AndroidDriver StartDriverAndroidApp02(String appLocation, String appPackage, String appActivity, String deviceName) throws MalformedURLException{

		try{Thread.sleep(5000);}catch(Exception e){}
		//appLocation = Config.appLocation;
		appPackage = Config.appPackage;
		appActivity = Config.appActivity;
		DesiredCapabilities capabilities = new DesiredCapabilities();	
		//DesiredCapabilities capabilities1 = new DesiredCapabilities();	

		ThreadLocal<AndroidDriver> threadDriver = null;
		
		//For device 1
		capabilities.setCapability(MobileCapabilityType.BROWSER_NAME, "ANDROID");
		capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.3");
		capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
		capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, deviceName);
		capabilities.setCapability(MobileCapabilityType.APP, appLocation);
		capabilities.setCapability(MobileCapabilityType.APP_PACKAGE, appPackage);
		capabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, appActivity);
		try {
			System.setProperty("webdriver.ie.driver", "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe");
			driver02 = new AndroidDriver(new URL("http://127.0.0.1:4444/wd/hub"), capabilities);
			threadDriver.set((AndroidDriver) driver02);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}  

		System.out.println("========driver after launching app========" + driver02 );
		driver02.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
		System.out.println("==========complete launchApp========");

		return threadDriver.get();  
	}
	
	
	
	@Test
	public void TC_01() {
		this.StartDriver01();
		SplashScreen splash = new SplashScreen(driver01, null);
		splash.ClickOnSearchJobsButton();
	}

	@Test
	public void TC_02() {
		this.StartDriver02();
		SplashScreen splash = new SplashScreen(driver02, null);
		splash.ClickOnLoginButton();
	}

}

My Config files for hub and node are as follows:

Hub:

{

"url":"http://127.0.0.1:4444/wd/hub",
"host": 127.0.0.1,
"port": 4444,
"newSessionWaitTimeout": -1,
"servlets" : [],
"prioritizer": null,
"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"throwOnCapabilityNotPresent": true,
"nodePolling": 5000,

"cleanUpCycle": 5000,
"timeout": 300000,
"maxSession": 5
}

Node files:

{
"capabilities":
[
{
"browserName": "ANDROID",
"version":"4.3",
"maxInstances": 1,
"platform":"ANDROID"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":10000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://127.0.0.1:4744/wd/hub",
"maxSession": 4,
"port": 4744,
"host": "127.0.0.1",
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "127.0.0.1",
"role":"node"
}
}

{
"capabilities":
[
{
"browserName": "ANDROID",
"version":"4.3",
"maxInstances": 1,
"platform":"ANDROID"
}
],
"configuration":
{
"cleanUpCycle":2000,
"timeout":10000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url":"http://127.0.0.1:4780/wd/hub",
"maxSession": 4,
"port": 4780,
"host": "127.0.0.1",
"register": true,
"registerCycle": 5000,
"hubPort": 4444,
"hubHost": "127.0.0.1",
"role":"node"
}
}

testng xml is as follows:

<?xml version="1.0" encoding="UTF-8"?>

thread-count="2">



<test name="ParallelExecution01" preserve-order="true">
    	<!--  <parameter name="DeviceId" value="ZX1D64QFK6"/> -->
	<classes>
		<class name="com.naukri.androidApp.TestSuite.ParallelExecution01">
			<methods>
				<include name="TC_01" />
			</methods>
		</class>
	</classes>
</test>

<test name="ParallelExecution02" preserve-order="true">
  <!--   <parameter name="DeviceId" value="a18dd209"/>  -->
	<classes>
		<class name="com.naukri.androidApp.TestSuite.ParallelExecution01">
			<methods>
				<include name="TC_02" />
			</methods>
		</class>
	</classes>
</test>

When I'm executing this code, it launches app only on any one device at a device. And throws a nullPointerException at "driver01 = new AndroidDriver(new URL("http://127.0.0.1:4444/wd/hub"), capabilities);" for both cases.

[TestNG] Running:

[ThreadUtil] Starting executor timeOut:2147483647ms workers:1 threadPoolSize:2
log4j:WARN No appenders could be found for logger (org.apache.http.client.protocol.RequestAddCookies).
log4j:WARN Please initialize the log4j system properly.
[Status]:TC_01_FAIL
[End]:08_51_30PM_10_Oct_2015_IP14.98.195.87
[Snapshot]:Click Here
[Status]:TC_02_FAIL
[End]:08_51_50PM_10_Oct_2015_IP14.98.195.87
[Snapshot]:Click Here
FAILED: TC_01
java.lang.NullPointerException
at com.naukri.androidApp.TestSuite.ParallelExecution01.StartDriverAndroidApp01(ParallelExecution01.java:86)
at com.naukri.androidApp.TestSuite.ParallelExecution01.StartDriver01(ParallelExecution01.java:42)
at com.naukri.androidApp.TestSuite.ParallelExecution01.TC_01(ParallelExecution01.java:159)
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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

FAILED: TC_02
java.lang.NullPointerException
at com.naukri.androidApp.TestSuite.ParallelExecution01.StartDriverAndroidApp02(ParallelExecution01.java:141)
at com.naukri.androidApp.TestSuite.ParallelExecution01.StartDriver02(ParallelExecution01.java:108)
at com.naukri.androidApp.TestSuite.ParallelExecution01.TC_02(ParallelExecution01.java:166)
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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:37)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:368)
at org.testng.internal.thread.ThreadUtil$2.call(ThreadUtil.java:64)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

===============================================
Default test
Tests run: 2, Failures: 2, Skips: 0
===============================================

===============================================
androidautomationnaukriindia
Total tests run: 2, Failures: 2, Skips: 0
===============================================

[TestNG] Time taken by org.testng.reporters.EmailableReporter2@4a2c1b1c: 8 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 9 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@4f8d0299: 10 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@309e7e21: 59 ms
[TestNG] Time taken by org.testng.reporters.XMLReporter@195bd6b9: 14 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@25b5dab5: 37 ms

Please help me find a solution to this.
I am using Appium 1.3.4.1, selenium (selenium-server-standalone-2.42.2) and java client 2.1.

Before this I was getting UnreachableBrowserException on the same line, when I tried to have same driver, and define different capabilities for the 2 devcies

@rashiatry
Make sure of the following:
- You have started Appium servers with the correct IP addresses and port numbers on the nodes.
- You need to provide the UDID of the device
- Please provide Appium logs
- Please provide hub log

@rashiatry :- When you use two driver instances for each devices means you are executing two different tests. It may run parallel but I think its not a good idea to develop your tests, because now tomorrow if you want to run test on 3 or 4 devices then again you need to create driver2 and driver3. I don't think its a good solution for long run. I have a solution with single driver instance (for more details send a mail to appiummaster@gmail.com).
Refer this video

@Hassan_Radi
Thanks.

Yes, Appium servers are started on correct IP addressess and port numbers on individual nodes. (For confirmation you can check the json file of one node i have provided.)

When providing UDID, logs are as follows:

   [debug] Error: Device 356446054209569 was not in the list of connected devices
 null.<anonymous> (C:\Appium\node_modules\appium\lib\devices\android\android-common.js:406:19)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:610:9)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:842:7)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:172:9)
 ChildProcess.exithandler (child_process.js:735:7)
 ChildProcess.emit (events.js:110:17)
 maybeClose (child_process.js:1008:16)
 Process.ChildProcess._handle.onexit (child_process.js:1080:5)
[debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Device 356446054209569 was not in
ist of connected devices)","origValue":"Device 356446054209569 was not in the list of connected devices"},"sessionId":null}
<-- POST /wd/hub/session 500 7189.815 ms - 248
--> GET /wd/hub/status {}
[debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}}}
<-- GET /wd/hub/status 200 2.641 ms - 104 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}}}
--> GET /wd/hub/status {}
[debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}}}
<-- GET /wd/hub/status 200 4.056 ms - 104 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}}}
--> POST /wd/hub/session {"desiredCapabilities":{"app":"C:\\git\\androidautomationnaukriindia\\apks\\NaukriSplashScreen-debug02.apk","platformVersion":"4.3","de
me":"07c54b02864c8a2a","platformName":"Android","appActivity":"com.naukri.fragments.NaukriSplashScreen","browserName":"ANDROID","udid":"357541050536566","appPac
"naukriApp.appModules.login"}}
Client User-Agent string: Apache-HttpClient/4.3.2 (java 1.5)
[debug] Using local app from desired caps: C:\git\androidautomationnaukriindia\apks\NaukriSplashScreen-debug02.apk
[debug] Creating new appium session 15829be6-71d1-41d3-9f93-73762d649fdb
Starting android appium
[debug] Getting Java version
Java version is: 1.7.0_25
[debug] Using fast reset? true
[debug] Preparing device for session
[debug] Checking whether app is actually present
[debug] Checking whether adb is present
[debug] Using adb from D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe
Retrieving device
[debug] Trying to find a connected android device
[debug] Getting connected devices...
[debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe devices
[debug] 2 device(s) connected
[debug] Sent shutdown command, waiting for UiAutomator to stop...
--> GET /wd/hub/status {}
[debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"
e6-71d1-41d3-9f93-73762d649fdb"}
<-- GET /wd/hub/status 200 5.133 ms - 155 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"1
6-71d1-41d3-9f93-73762d649fdb"}
UiAutomator did not shut down fast enough, calling it gone
[debug] Cleaning up android objects
[debug] Cleaning up appium session
 Failed to start an Appium session, err was: Error: Device 357541050536566 was not in the list of connected devices
[debug] Error: Device 357541050536566 was not in the list of connected devices
 null.<anonymous> (C:\Appium\node_modules\appium\lib\devices\android\android-common.js:406:19)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:610:9)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:842:7)
 null.<anonymous> (C:\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:172:9)
 ChildProcess.exithandler (child_process.js:735:7)
 ChildProcess.emit (events.js:110:17)
 maybeClose (child_process.js:1008:16)
 Process.ChildProcess._handle.onexit (child_process.js:1080:5)
[debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Device 357541050536566 was not in
ist of connected devices)","origValue":"Device 357541050536566 was not in the list of connected devices"},"sessionId":null}
<-- POST /wd/hub/session 500 7184.242 ms - 248

Logs when UDID is not provided:

info: <-- GET /wd/hub/status 200 93016.713 ms - 104 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}}}
info: --> POST /wd/hub/session {"desiredCapabilities":{"app":"C:\\git\\androidautomationnaukriindia\\apks\\NaukriSplashScreen-debug02.apk","platformVersion":"4.3","de
viceName":"07c54b02864c8a2a","platformName":"Android","appActivity":"com.naukri.fragments.NaukriSplashScreen","browserName":"ANDROID","appPackage":"naukriApp.appModul
es.login"}}
info: Client User-Agent string: Apache-HttpClient/4.3.2 (java 1.5)
info: [debug] Using local app from desired caps: C:\git\androidautomationnaukriindia\apks\NaukriSplashScreen-debug02.apk
info: [debug] Creating new appium session 26544b18-0d5d-4e5e-b759-50f42cc14968
info: Starting android appium
info: [debug] Getting Java version
info: Java version is: 1.7.0_25
info: [debug] Using fast reset? true
info: [debug] Preparing device for session
info: [debug] Checking whether app is actually present
info: [debug] Checking whether adb is present
info: [debug] Using adb from D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe
info: Retrieving device
info: [debug] Trying to find a connected android device
info: [debug] Getting connected devices...
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe devices
info: [debug] 2 device(s) connected
info: Found device 4df707995bd4215b
info: [debug] Setting device id to 4df707995bd4215b
info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5)
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b wait-for-device
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "echo 'ready'"
info: [debug] Starting logcat capture
info: [debug] Getting device API level
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "getprop ro.build.version.sdk"
info: [debug] Device is at API Level 18
info: Device API level is: 18
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "getprop persist.sys.language"
info: [debug] Current device persist.sys.language: en
info: [debug] java -jar "C:\Appium\node_modules\appium\node_modules\appium-adb\jars\appium_apk_tools.jar" "stringsFromApk" "C:\git\androidautomationnaukriindia\apks\N
aukriSplashScreen-debug02.apk" "C:\Users\RASHI~1.ATR\AppData\Local\Temp\naukriApp.appModules.login" en
info: [debug] No strings.xml for language 'en', getting default strings.xml
info: [debug] java -jar "C:\Appium\node_modules\appium\node_modules\appium-adb\jars\appium_apk_tools.jar" "stringsFromApk" "C:\git\androidautomationnaukriindia\apks\N
aukriSplashScreen-debug02.apk" "C:\Users\RASHI~1.ATR\AppData\Local\Temp\naukriApp.appModules.login"
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b push "C:\\Users\\RASHI~1.ATR\\AppData\\Local\\Temp\\nau
kriApp.appModules.login\\strings.json" /data/local/tmp
info: [debug] Checking whether aapt is present
info: [debug] Using aapt from D:\adt-bundle-windows-x86-20130729\sdk\build-tools\android-4.3\aapt.exe
info: [debug] Retrieving process from manifest.
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\build-tools\android-4.3\aapt.exe dump xmltree C:\git\androidautomationnaukriindia\apks\NaukriSplas
hScreen-debug02.apk AndroidManifest.xml
info: [debug] Set app process to: naukriApp.appModules.login
info: [debug] Not uninstalling app since server not started with --full-reset
info: [debug] Checking app cert for C:\git\androidautomationnaukriindia\apks\NaukriSplashScreen-debug02.apk.
info: [debug] executing cmd: java -jar C:\Appium\node_modules\appium\node_modules\appium-adb\jars\verify.jar C:\git\androidautomationnaukriindia\apks\NaukriSplashScre
en-debug02.apk
info: --> GET /wd/hub/status {}
info: [debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"
26544b18-0d5d-4e5e-b759-50f42cc14968"}
info: <-- GET /wd/hub/status 200 2.839 ms - 155 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"2
6544b18-0d5d-4e5e-b759-50f42cc14968"}
info: [debug] App already signed.
info: [debug] Zip-aligning C:\git\androidautomationnaukriindia\apks\NaukriSplashScreen-debug02.apk
info: [debug] Checking whether zipalign is present
info: [debug] Using zipalign from D:\adt-bundle-windows-x86-20130729\sdk\build-tools\20.0.0\zipalign.exe
info: [debug] Zip-aligning apk.
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\build-tools\20.0.0\zipalign.exe -f 4 C:\git\androidautomationnaukriindia\apks\NaukriSplashScreen-d
ebug02.apk C:\Users\RASHI~1.ATR\AppData\Local\Temp\appium115912-8656-12e5dk5.tmp
info: [debug] MD5 for app is 066cb494e957769820f384372c5893ed
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "ls /data/local/tmp/066cb494e957769820f384372c589
3ed.apk"
info: [debug] Getting install status for naukriApp.appModules.login
info: [debug] Getting device API level
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "getprop ro.build.version.sdk"
info: [debug] Device is at API Level 18
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "pm list packages -3 naukriApp.appModules.login"
info: [debug] App is installed
info: App is already installed, resetting app
info: [debug] Running fast reset (stop and clear)
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "am force-stop naukriApp.appModules.login"
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "pm clear naukriApp.appModules.login"
info: [debug] Forwarding system:4724 to device:4724
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b forward tcp:4724 tcp:4724
info: [debug] Pushing appium bootstrap to device...
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b push "C:\\Appium\\node_modules\\appium\\build\\android_
bootstrap\\AppiumBootstrap.jar" /data/local/tmp/
info: [debug] Pushing settings apk to device...
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b install "C:\Appium\node_modules\appium\build\settings_a
pk\settings_apk-debug.apk"
info: [debug] Pushing unlock helper app to device...
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b install "C:\Appium\node_modules\appium\build\unlock_apk
\unlock_apk-debug.apk"
info: --> GET /wd/hub/status {}
info: [debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"
26544b18-0d5d-4e5e-b759-50f42cc14968"}
info: <-- GET /wd/hub/status 200 3.557 ms - 155 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"2
6544b18-0d5d-4e5e-b759-50f42cc14968"}
info: Starting App
info: [debug] Attempting to kill all 'uiautomator' processes
info: [debug] Getting all processes with 'uiautomator'
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "ps 'uiautomator'"
info: [debug] Attempting to kill process 20444
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "kill 20444"
info: [debug] Running bootstrap
info: [debug] spawning: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell uiautomator runtest AppiumBootstrap.jar -c io.appium.a
ndroid.bootstrap.Bootstrap
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class=io.appium.android.bootstrap.Bootstrap
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=
info: [debug] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: 1
info: [debug] [BOOTSTRAP] [debug] Socket opened on port 4724
info: [debug] [BOOTSTRAP] [debug] Appium Socket Server Ready
info: [debug] [BOOTSTRAP] [debug] Loading json...
info: [debug] Waking up device if it's not alive
info: [debug] Pushing command to appium work queue: ["wake",{}]
info: [debug] [BOOTSTRAP] [debug] json loading complete.
info: [debug] [BOOTSTRAP] [debug] Registered crash watchers.
info: [debug] [BOOTSTRAP] [debug] Client connected
info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"wake","params":{}}
info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "dumpsys window"
info: [debug] [BOOTSTRAP] [debug] Got command action: wake
info: [debug] [BOOTSTRAP] [debug] Returning result: {"value":true,"status":0}
info: [debug] Screen already unlocked, continuing.
info: [debug] Pushing command to appium work queue: ["getDataDir",{}]
info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"getDataDir","params":{}}
info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
info: [debug] [BOOTSTRAP] [debug] Got command action: getDataDir
info: [debug] [BOOTSTRAP] [debug] Returning result: {"value":"\/data\/local\/tmp","status":0}
info: [debug] dataDir set to: /data/local/tmp
info: [debug] Pushing command to appium work queue: ["compressedLayoutHierarchy",{"compressLayout":false}]
info: [debug] [BOOTSTRAP] [debug] Got data from client: {"cmd":"action","action":"compressedLayoutHierarchy","params":{"compressLayout":false}}
info: [debug] [BOOTSTRAP] [debug] Got command of type ACTION
info: [debug] [BOOTSTRAP] [debug] Got command action: compressedLayoutHierarchy
info: [debug] Getting device API level
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "getprop ro.build.version.sdk"
info: [debug] [BOOTSTRAP] [debug] Returning result: {"value":false,"status":0}
info: [debug] Device is at API Level 18
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "am start -S -a android.intent.action.MAIN -c and
roid.intent.category.LAUNCHER -f 0x10200000 -n naukriApp.appModules.login/com.naukri.fragments.NaukriSplashScreen"
info: [debug] Waiting for pkg "naukriApp.appModules.login" and activity "com.naukri.fragments.NaukriSplashScreen" to be focused
info: [debug] Getting focused package and activity
info: [debug] executing cmd: D:\adt-bundle-windows-x86-20130729\sdk\platform-tools\adb.exe -s 4df707995bd4215b shell "dumpsys window windows"
info: [debug] Device launched! Ready for commands
info: [debug] Setting command timeout to the default of 60 secs
info: [debug] Appium session started with sessionId 26544b18-0d5d-4e5e-b759-50f42cc14968
info: <-- POST /wd/hub/session 303 11406.100 ms - 9
info: --> GET /wd/hub/session/26544b18-0d5d-4e5e-b759-50f42cc14968 {}
info: [debug] Responding to client with success: {"status":0,"value":{"platform":"LINUX","browserName":"ANDROID","platformVersion":"4.3","webStorageEnabled":false,"ta
kesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"app":"C:
\\git\\androidautomationnaukriindia\\apks\\NaukriSplashScreen-debug02.apk","platformVersion":"4.3","deviceName":"07c54b02864c8a2a","platformName":"Android","appActivi
ty":"com.naukri.fragments.NaukriSplashScreen","browserName":"ANDROID","appPackage":"naukriApp.appModules.login"},"app":"C:\\git\\androidautomationnaukriindia\\apks\\N
aukriSplashScreen-debug02.apk","deviceName":"07c54b02864c8a2a","platformName":"Android","appActivity":"com.naukri.fragments.NaukriSplashScreen","appPackage":"naukriAp
p.appModules.login"},"sessionId":"26544b18-0d5d-4e5e-b759-50f42cc14968"}
info: <-- GET /wd/hub/session/26544b18-0d5d-4e5e-b759-50f42cc14968 200 4.722 ms - 853 {"status":0,"value":{"platform":"LINUX","browserName":"ANDROID","platformVersion
":"4.3","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":fal
se,"warnings":{},"desired":{"app":"C:\\git\\androidautomationnaukriindia\\apks\\NaukriSplashScreen-debug02.apk","platformVersion":"4.3","deviceName":"07c54b02864c8a2a
","platformName":"Android","appActivity":"com.naukri.fragments.NaukriSplashScreen","browserName":"ANDROID","appPackage":"naukriApp.appModules.login"},"app":"C:\\git\\
androidautomationnaukriindia\\apks\\NaukriSplashScreen-debug02.apk","deviceName":"07c54b02864c8a2a","platformName":"Android","appActivity":"com.naukri.fragments.Naukr
iSplashScreen","appPackage":"naukriApp.appModules.login"},"sessionId":"26544b18-0d5d-4e5e-b759-50f42cc14968"}
info: --> GET /wd/hub/status {}
info: [debug] Responding to client with success: {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"
26544b18-0d5d-4e5e-b759-50f42cc14968"}
info: <-- GET /wd/hub/status 200 3.028 ms - 155 {"status":0,"value":{"build":{"version":"1.3.4","revision":"c8c79a85fbd6870cd6fc3d66d038a115ebe22efe"}},"sessionId":"2
6544b18-0d5d-4e5e-b759-50f42cc14968"}

How can I get hub logs, I have limited knowledge about Selenium Grid.
Please help me find problem, so that solution could be found.

@Appium_Master thanks, for help. I ave tried doing this whole thing with single driver instance as well, but even that didn't work.
I'll try again with your provided information and will inform.

18 days later

Hi Bhaskar, how you are running parallel tests without selenium grid..I am facing issues with executing test scripts on multiple devices. At a time i am executing only in one device..Can you please briefly explain me how to do that ?

Hi @kallemsandeep,

I am able to run tests parallel on multiple devices, by giving different udids ,appium server's port numbers & bootstrap port numbers.

Please follow the below posts...You may able to do and fulfill your requirement.