How to stop and start Appium server programmatically using Java?

Tags: ,



How can I perform launching and stopping my server using Java code? Currently I am doing this process manually.

Answer

There are 3 ways to achieve the scenario.
1)Using AppiumDriverLocalService

public void startServer() {
    //Set Capabilities
    cap = new DesiredCapabilities();
    cap.setCapability("noReset", "false");

    //Build the Appium service
    builder = new AppiumServiceBuilder();
    builder.withIPAddress("127.0.0.1");
    builder.usingPort(4723);
    builder.withCapabilities(cap);
    builder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
    builder.withArgument(GeneralServerFlag.LOG_LEVEL,"error");

    //Start the server with the builder
    service = AppiumDriverLocalService.buildService(builder);
    service.start();
}

public void stopServer() {
    service.stop();
}


2)Using Appium.js with Node.exe

public void startServer() {
    CommandLine cmd = new CommandLine("C:\Program Files (x86)\Appium\node.exe");
    cmd.addArgument("C:\Program Files (x86)\Appium\node_modules\appium\bin\Appium.js");
    cmd.addArgument("--address");
    cmd.addArgument("127.0.0.1");
    cmd.addArgument("--port");
    cmd.addArgument("4723");

    DefaultExecuteResultHandler handler = new DefaultExecuteResultHandler();
    DefaultExecutor executor = new DefaultExecutor();
    executor.setExitValue(1);
    try {
        executor.execute(cmd, handler);
        Thread.sleep(10000);
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

public void stopServer() {
    Runtime runtime = Runtime.getRuntime();
    try {
        runtime.exec("taskkill /F /IM node.exe");
    } catch (IOException e) {
        e.printStackTrace();
    }
}


3)Start Appium server using Command Prompt

public void startServer() {
    Runtime runtime = Runtime.getRuntime();
    try {
        runtime.exec("cmd.exe /c start cmd.exe /k "appium -a 127.0.0.1 -p 4723 --session-override -dc "{""noReset"": ""false""}""");
        Thread.sleep(10000);
    } catch (IOException | InterruptedException e) {
        e.printStackTrace();
    }
}

public void stopServer() {
    Runtime runtime = Runtime.getRuntime();
    try {
        runtime.exec("taskkill /F /IM node.exe");
        runtime.exec("taskkill /F /IM cmd.exe");
    } catch (IOException e) {
        e.printStackTrace();
    }
}<br/>

I found it helpful.Hope it helps. Source: http://www.automationtestinghub.com/3-ways-to-start-appium-server-from-java/



Source: stackoverflow