# Appium Parallel Execution

**URL:** <https://discuss.appium.io/t/appium-parallel-execution/12139>\
**Category:** Issues/Bugs\
**Created:** [September 14, 2016, 9:11am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139 "2016-09-14T09:11:03Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![TuHuynh](https://discuss.appium.io/user_avatar/discuss.appium.io/tuhuynh/32/2487_2.png) [@TuHuynh](https://discuss.appium.io/u/TuHuynh)\
**Post date:** [October 7, 2016, 6:12am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/23 "2016-10-07T06:12:38Z")

</div>

I found out some reference links to follow, I will give a try first then come back to you if I face any issue.

Thanks man.

---

<div class="post-metadata">

**Author:** ![pavan\_appium](https://discuss.appium.io/letter_avatar_proxy/v4/letter/p/7cd45c/32.png) [@pavan\_appium](https://discuss.appium.io/u/pavan_appium)\
**Post date:** [October 7, 2016, 6:14am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/24 "2016-10-07T06:14:43Z")

</div>

Just FYI I have tried to run same set of tests on iOS Simulator and Real device connected to same machine at the same time.

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 11, 2016, 9:58am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/25 "2016-10-11T09:58:40Z")

</div>

@pavan_appium @TuHuynh  
I’m starting the grid and registering the appium instance in java code using the below snippet:

@BeforeSuite  
public void startgrid() throws IOException, InterruptedException{  
Runtime.getRuntime().exec(“java -jar /Users/dd/Selenium/selenium-server-standalone-2.53.1.jar -role hub [http://127.0.0.1:4444/grid](http://127.0.0.1:4444/grid)”);  
Thread.sleep(50000);  
Runtime.getRuntime().exec(“appium -a 127.0.0.1 -p 4723 --no-reset --bootstrap-port 4730 -U device111 --nodeconfig /Users/dd/workspace/SampleAutomation/jsonFiles/node\_config\_1.json”);  
Runtime.getRuntime().exec(“appium -a 127.0.0.1 -p 4725 --no-reset --bootstrap-port 4730 -U device222 --nodeconfig /Users/dd/workspace/SampleAutomation/jsonFiles/node\_config\_3.json”);  
Thread.sleep(50000);  
}

First time when I run the test , grid is starting and the two appium instances are getting registered and test runs as I expected. Next time when I do **mvn test** it is showing the following execption  
**org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.**  
**Build info: version: ‘2.53.0’, revision: ‘35ae25b1534ae328c771e0856c93e187490ca824’, time: '2016-03-15 10:43:46’**

Can u say how to **stop the grid once the test is completed**?

---

<div class="post-metadata">

**Author:** ![TuHuynh](https://discuss.appium.io/user_avatar/discuss.appium.io/tuhuynh/32/2487_2.png) [@TuHuynh](https://discuss.appium.io/u/TuHuynh)\
**Post date:** [October 11, 2016, 10:12am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/26 "2016-10-11T10:12:36Z")

</div>

I think you just need to kill appium is ok.

Taskkill /F /IM node.exe

Am I right @pavan_appium ?

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 11, 2016, 10:18am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/27 "2016-10-11T10:18:02Z")

</div>

in @afterSuite we need to give this command??

---

<div class="post-metadata">

**Author:** ![TuHuynh](https://discuss.appium.io/user_avatar/discuss.appium.io/tuhuynh/32/2487_2.png) [@TuHuynh](https://discuss.appium.io/u/TuHuynh)\
**Post date:** [October 11, 2016, 10:19am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/28 "2016-10-11T10:19:15Z")

</div>

With me, yes, and I used below method:

==

```
public static void stopServer() {
    CommandLine command = new CommandLine("cmd");
    command.addArgument("/c");
    command.addArgument("Taskkill /F /IM node.exe");

    try {
        DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
        DefaultExecutor executor = new DefaultExecutor();
        executor.setExitValue(1);
        executor.execute(command, resultHandler);
        Thread.sleep(5000);

        System.out.println("------> Appium server stopped.");
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}
```

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 11, 2016, 10:20am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/29 "2016-10-11T10:20:00Z")

</div>

@TuHuynh  
what u have specifed is for Windows machine ?? I’m using mac and wat about it?

And I also tried

@AfterSuite  
public void appstop() throws IOException {  
**Runtime.getRuntime().exec(“killall node”);**  
}

This also didnt work out.

---

<div class="post-metadata">

**Author:** ![pavan\_appium](https://discuss.appium.io/letter_avatar_proxy/v4/letter/p/7cd45c/32.png) [@pavan\_appium](https://discuss.appium.io/u/pavan_appium)\
**Post date:** [October 12, 2016, 9:21am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/30 "2016-10-12T09:21:02Z")

</div>

Sorry for late reply.  
Yes you need to kill Appium as initiating new session is a bit issue with current build  
if you have to kill appiumon mac then use command “pkill -f appium (or node)”

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 12, 2016, 11:42am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/31 "2016-10-12T11:42:04Z")

</div>

can i gve this in aftersuite as I mentioned below?  
@AfterSuite  
public void appstop() throws IOException {  
Runtime.getRuntime().exec(“pkill -f appium”);  
}

---

<div class="post-metadata">

**Author:** ![vaibhav\_khachane](https://discuss.appium.io/letter_avatar_proxy/v4/letter/v/b782af/32.png) [@vaibhav\_khachane](https://discuss.appium.io/u/vaibhav_khachane)\
**Post date:** [October 12, 2016, 12:11pm UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/32 "2016-10-12T12:11:04Z")

</div>

@pavan_appium: Hi Pavan, I am trying selenium grid but couldn’t succeed in it. I have referred so many tutorials till stuck in it… Please share any document which describe step by step process for implementation for selenium grid. I want to implement it for IOS and Android platform. Thanks in Advance.

 ![](https://discuss.appium.io/uploads/default/original/2X/1/1afc7342a5fe966584115f39f2e6bb858e9b74cf.jpg) ![](https://discuss.appium.io/uploads/default/original/2X/2/24e0db763da1164e96d2e147fa20482600c4b935.jpg)  
In screenshot no 1. how to procced next step  
In Screenshot no. 2 , while executing code , it displayed error

---

<div class="post-metadata">

**Author:** ![pavan\_appium](https://discuss.appium.io/letter_avatar_proxy/v4/letter/p/7cd45c/32.png) [@pavan\_appium](https://discuss.appium.io/u/pavan_appium)\
**Post date:** [October 12, 2016, 12:27pm UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/33 "2016-10-12T12:27:30Z")

</div>

Please set ANDROID\_HOME env variable correctly so that adb command runs correctly.

---

<div class="post-metadata">

**Author:** ![vaibhav\_khachane](https://discuss.appium.io/letter_avatar_proxy/v4/letter/v/b782af/32.png) [@vaibhav\_khachane](https://discuss.appium.io/u/vaibhav_khachane)\
**Post date:** [October 12, 2016, 12:43pm UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/34 "2016-10-12T12:43:18Z")

</div>

@pavan_appium:- i have set env variable fot ANDROID\_HOME

 ![](https://discuss.appium.io/uploads/default/original/2X/9/980366df9392c852cca9a3ef675935f9e812dd70.jpg)

let me know if any issue in screenshot

---

<div class="post-metadata">

**Author:** ![pavan\_appium](https://discuss.appium.io/letter_avatar_proxy/v4/letter/p/7cd45c/32.png) [@pavan\_appium](https://discuss.appium.io/u/pavan_appium)\
**Post date:** [October 12, 2016, 12:49pm UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/35 "2016-10-12T12:49:11Z")

</div>

Did you add ANDROID\_HOME in PATH Variable too ?

---

<div class="post-metadata">

**Author:** ![vaibhav\_khachane](https://discuss.appium.io/letter_avatar_proxy/v4/letter/v/b782af/32.png) [@vaibhav\_khachane](https://discuss.appium.io/u/vaibhav_khachane)\
**Post date:** [October 12, 2016, 12:52pm UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/36 "2016-10-12T12:52:48Z")

</div>

yes

 ![](https://discuss.appium.io/uploads/default/original/2X/d/d46435fbace183f65d47d8c4032b8b2e990b14af.jpg)

---

<div class="post-metadata">

**Author:** ![TuHuynh](https://discuss.appium.io/user_avatar/discuss.appium.io/tuhuynh/32/2487_2.png) [@TuHuynh](https://discuss.appium.io/u/TuHuynh)\
**Post date:** [October 13, 2016, 2:12am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/37 "2016-10-13T02:12:30Z")

</div>

Please give a try with setting ANDROID\_HOME in your Eclipse

In [Run configuration] please set as attached pic.  
 ![](https://discuss.appium.io/uploads/default/original/2X/2/29a995ba0a09daf0def991408fe5f3dedc382348.PNG)

---

<div class="post-metadata">

**Author:** ![vaibhav\_khachane](https://discuss.appium.io/letter_avatar_proxy/v4/letter/v/b782af/32.png) [@vaibhav\_khachane](https://discuss.appium.io/u/vaibhav_khachane)\
**Post date:** [October 13, 2016, 4:29am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/38 "2016-10-13T04:29:52Z")

</div>

@TuHuynh: Tried but doesn’t work. Other script are runnung fine. I have use following procedure  
1)Started Hub  
2)Started Node  
3)try to execute script

Let me know if i am missing anything

I am trying demo example:  
Code 1:- CalcExample .java

> package example;  
> import java.io.File;  
> import libs.BaseTest;  
> import org.openqa.selenium.By;  
> public class CalcExample extends BaseTest{

> ```
> public CalcExample(){
> }
> 
> public CalcExample(int deviceNum) {
> super(deviceNum);
> }
> 
> public void performOperations() {
>     
> try
> {
> driver.findElement(By.id("com.android2.calculator3:id/cling_dismiss")).click();
> driver.findElement(By.id("com.android2.calculator3:id/digit5")).click();
> driver.findElement(By.id("com.android2.calculator3:id/plus")).click();
> driver.findElement(By.id("com.android2.calculator3:id/digit9")).click();
> driver.findElement(By.id("com.android2.calculator3:id/equal")).click();
> String num = driver.findElement(By.xpath("//android.widget.EditText[@index=0]")).getText();
> System.out.println("Result : "+num);
> driver.closeApp();
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
> }
> 
> public void run(){
> File app = new File("C:\\AndroidCalculator.apk");
> String appPath = app.getAbsolutePath();
> createDriver(appPath); // create devices
> performOperations(); // user function
> }
> 
> ```

> ```
> public static void main(String[] args) {
> // Create object
> CalcExample calc = new CalcExample();
> calc.execute();
> }
> 
> ```
> 
> }

Code 2:-

> package libs;  
> import libs.DeviceConfiguration;  
> import io.appium.java\_client.android.AndroidDriver;  
> import java.lang.reflect.Array;  
> import java.lang.reflect.Constructor;  
> import java.lang.reflect.Method;  
> import java.net.URL;  
> import java.util.HashMap;  
> import java.util.Map;  
> import org.openqa.selenium.remote.CapabilityType;  
> import org.openqa.selenium.remote.DesiredCapabilities;  
> public class BaseTest implements Runnable{  
> public AndroidDriver driver;  
> protected BaseTest deviceThreads;  
> protected int numOfDevices;  
> protected String deviceId;  
> protected String deviceName;  
> protected String osVersion;  
> protected String port;  
> protected Thread t;  
> protected int deviceCount;
> 
> ```
> AppiumManager appiumMan = new AppiumManager();
> static Map<String, String> devices = new HashMap<String, String>();
> static DeviceConfiguration deviceConf = new DeviceConfiguration();
> 
> ```

> ```
> public BaseTest(){
> try {
> devices = deviceConf.getDivces();
> deviceCount = devices.size()/3;
> }catch (Exception e) {
> e.printStackTrace();
> }
> }
> 
> public BaseTest(int i){
> int deviceNumber = (i+1);
> this.deviceId = devices.get("deviceID"+deviceNumber);
> this.deviceName = devices.get("deviceName"+deviceNumber);
> this.osVersion = devices.get("osVersion"+deviceNumber);
> }
> 
> public void createDriver(){
> try {
> port = appiumMan.startAppium(); // Start appium server              
>           
> // create appium driver instance
> DesiredCapabilities capabilities = DesiredCapabilities.android();
> capabilities.setCapability("deviceName", deviceName);
> capabilities.setCapability("platformName", "android");
> capabilities.setCapability(CapabilityType.VERSION, osVersion);
> capabilities.setCapability(CapabilityType.BROWSER_NAME, "chrome");
> capabilities.setCapability("udid", deviceId);
>             
> this.driver = new AndroidDriver(new URL("http://127.0.0.1:"+port+"/wd/hub"),capabilities);
> }
> catch(Exception e){
> e.printStackTrace();
> }
> }
> 
> public void createDriver(String appPath){
> try {
> port = appiumMan.startAppium(); // Start appium server              
>           
> // create appium driver instance
> DesiredCapabilities capabilities = DesiredCapabilities.android();
> capabilities.setCapability("deviceName", deviceName);
> capabilities.setCapability("platformName", "android");
> capabilities.setCapability(CapabilityType.VERSION, osVersion);
> capabilities.setCapability("app", appPath);
> capabilities.setCapability("udid", deviceId);
>             
> this.driver = new AndroidDriver(new URL("http://127.0.0.1:"+port+"/wd/hub"),capabilities);
> }
> catch(Exception e){
> e.printStackTrace();
> }
> }
> 
> public void destroyDriver()
> {
> driver.quit();
> try {
> deviceConf.stopADB();
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> public void start(){
> if (t == null){
> t = new Thread(this);
> t.start ();
> }
> }
> 
> ```

> ```
> public void run(){
> }
> 
> public <c> void execute()
> {
> Class<?> c;
> try {
> int startMethod = 0;
> String className = this.getClass().toString();
> System.out.println("class : "+className);
> className = className.replace("class ", "");
> System.out.println("class : "+className);
> // Get extended class name
> c = Class.forName(className);
> System.out.println("class : "+c);
>         
> // Get start method
> Method[] m = c.getMethods();
> System.out.println("methods: "+m.length);
> for(int i=0;i<m.length;i++) {
> //System.out.println("methods: "+m[i]);
> if(m[i].toString().contains("start")){
> startMethod=i;
> break;
> }
> }
> System.out.println("methods: "+m[startMethod]);
> // get constructor
> Constructor<?> cons = c.getConstructor(Integer.TYPE);
> System.out.println("cons: "+cons);
>         
> System.out.println("deviceCount: "+deviceCount);
> // Create array of objects
> Object obj = Array.newInstance(c, deviceCount);
> for (int i = 0; i < deviceCount; i++) {
> Object val = cons.newInstance(i);
> Array.set(obj, i, val);
> }
> 
> ```

> ```
> for (int i = 0; i < deviceCount; i++) {
> Object val = Array.get(obj, i);
> m[startMethod].invoke(val);
> }
>         
> } catch (Exception e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>     
> }
> 
> ```
> 
> }

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 13, 2016, 8:07am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/39 "2016-10-13T08:07:07Z")

</div>

@pavan_appium @TuHuynh  
I m trying to send the emailable-report.html through mail . I configured in jenkins also but once the test is completed I’m getting the following lines.

**Email was triggered for: Always**  
**Sending email for trigger: Always**  
**Sending email to: email@email.in**  
**Connection error sending email, retrying once more in 10 seconds…**  
**Connection error sending email, retrying once more in 10 seconds…**  
**Failed after second try sending email**

I configured using editable-email notification . I dont know whats the problem once I completed the test . Pls help me to solve this issue.

---

<div class="post-metadata">

**Author:** ![Durga\_M](https://discuss.appium.io/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@Durga\_M](https://discuss.appium.io/u/Durga_M)\
**Post date:** [October 13, 2016, 9:32am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/40 "2016-10-13T09:32:05Z")

</div>

can anyone provide suggestion on the above issue??

---

<div class="post-metadata">

**Author:** ![suri.kiran](https://discuss.appium.io/letter_avatar_proxy/v4/letter/s/aca169/32.png) [@suri.kiran](https://discuss.appium.io/u/suri.kiran)\
**Post date:** [January 18, 2017, 7:28am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/41 "2017-01-18T07:28:33Z")

</div>

this link is not working as getting below error when clicked on it

PAGE NOT FOUND  
Error 404  
Sorry, the page you were looking for at this URL was not found.

Search this site on Google

configuring appium node servers with selenium grid  
SEARCH GOOGLE  
© 2017 Zymr, Inc.

---

<div class="post-metadata">

**Author:** ![suri.kiran](https://discuss.appium.io/letter_avatar_proxy/v4/letter/s/aca169/32.png) [@suri.kiran](https://discuss.appium.io/u/suri.kiran)\
**Post date:** [January 18, 2017, 7:37am UTC](https://discuss.appium.io/t/appium-parallel-execution/12139/42 "2017-01-18T07:37:32Z")

</div>

I have been trying since weeks to do parallel execution but failed…the complete details of my issue are present in the below link…can you please help me to solve this issue…[Appium Parallel Execution](https://discuss.appium.io/t/appium-parallel-execution/12139)

[Previous page](https://discuss.appium.io/t/appium-parallel-execution/12139.md?page=1)

[Next page](https://discuss.appium.io/t/appium-parallel-execution/12139.md?page=3)
