Kudrich
Kudrich

Reputation: 11

Start Appium server before test suit start running

I'm looking for an advice how to run Appium server + Android emulator from code. Part of code which I'm trying to use located below. I configured emulator in AVD manager and ran the code, but problem is that since Android emulator is starting slowly and scripts are not waiting for it, that means part of them fails (before emulator is fully loaded). How is it possible to manage this stuff?

ServerArguments serverArguments = new ServerArguments();
    serverArguments.setArgument("--address", "127.0.0.1");
    serverArguments.setArgument("--port", Integer.valueOf(4723));
    serverArguments.setArgument("--no-reset", true);
    serverArguments.setArgument("--local-timezone", true);
    serverArguments.setArgument("--session-override", true);
    serverArguments.setArgument("--avd", "avdname"));
    serverArguments.setArgument("--app-activity", "appactivity");
    serverArguments.setArgument("--app-pkg", "apppackage");
    serverArguments.setArgument("--platform-name", "Android");
    serverArguments.setArgument("--platform-version", Integer.valueOf(22));
    serverArguments.setArgument("--automation-name", "Appium");
    serverArguments.setArgument("--app", "pathtoapk");

    AppiumServer appiumServer = new AppiumServer(serverArguments);
    appiumServer.startServer();

Upvotes: 0

Views: 837

Answers (2)

Devdutta Goyal
Devdutta Goyal

Reputation: 1135

Use implicitlyWait

driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);

// for 60 seconds

// you can increase or decrease the time according to execution speed

Upvotes: 0

Rudziankoŭ
Rudziankoŭ

Reputation: 11251

I suggest using tests framework such as Junit or TestNG. Then you will have bunch of annotations that will be handled by framework engine so that you will be able to emphasize which stage should be done Before test, After test, or may be done all together in parallel.

   @BeforeClass
   public void beforeClass() {
      appiumServer.startServer();
   } 

   @Test
   public void testCase1() {
      // run test
   }

Upvotes: 2

Related Questions