Machine A IP:- 192.168.2.3
Run appium server on machine A.
Machine B :- Where your scripts are kept.
machine B should be able to ping and accessable machine A.
Run the script like below with providing Machine A IP Address.
public class AppiumExampleTest { private WebDriver driver = null; @Before public void setup() { File appDir = new File("..//TestedAndroidApp//bin//"); File app = new File(appDir, "TestedAndroidApp.apk"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability(CapabilityType.VERSION, "4.2"); capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS"); capabilities.setCapability(CapabilityConstants.DEVICE, "android"); capabilities.setCapability(CapabilityConstants.APP_PACKAGE, "com.example.android"); capabilities.setCapability(CapabilityConstants.APP_ACTIVITY, "MainActivity"); capabilities.setCapability(CapabilityConstants.APP, app.getAbsolutePath()); try { driver = new RemoteWebDriver(new URL("http://192.168.2.3:4723/wd/hub"), capabilities); } catch (MalformedURLException e) { e.printStackTrace(); } driver.manage().timeouts().implicitlyWait(80, TimeUnit.SECONDS); } @Test public void appiumExampleTest() throws Exception { // find button with label or content-description "Button 1" WebElement button=driver.findElement(By.name("Button 1")); // click on button and start second Activity button.click(); // we are on second screen now // check if second screen contains TextView with text âActivity2â driver.findElement("Activity2"); // click back button HashMap keycode = new HashMap(); keycode.put("keycode", 4); ((JavascriptExecutor) driver).executeScript("mobile: keyevent", keycode); // we are again in main activity driver.findElement(By.name("Button1")); } @After public void tearDown() { if (driver != null) { driver.quit(); } } }