2017-01-04 3 views
1

Я использую терминал MAC для запуска сервера приложений. В терминале я выполнил команду appium &, чтобы запустить сервер, который работает.Запуск сервера приложений через Java

Я установил appium сервер через терминал с помощью npm -g install appium

Однако, когда я пытаюсь выполнить один и тот же код, используя Java, то сервер не запускается.

Код:

Runtime.getRuntime().exec(new String[]{"/bin/sh","appium &"}) 

Ошибка: Нет такого файла или каталога.

Я также попытался создать сценарий оболочки с помощью команды appium. Когда я вызываю скрипт оболочки через Java, он говорит, что команда не найдена.

Код для вызова команды сценария оболочки.

Process p = new ProcessBuilder(new String[]{"/bin/sh","-c","sh appium.sh"}) 

На применение в Java, он дает ошибку «appium.sh:Error на LINE1 - appium команда не найдена»

Когда я вызывается один и тот же скрипт через терминал, appium сервер успешно запущен.

ответ

0

Вы можете использовать ниже код для Запуск сервера appium с использованием Java-код и использовать service_url в то время как intializing appium драйвер .example берется из THIS POST

import java.io.File; 

import io.appium.java_client.service.local.AppiumDriverLocalService; 
import io.appium.java_client.service.local.AppiumServiceBuilder; 

public class AppiumServerStartStop { 

    static String Appium_Node_Path="C:\\Program Files (x86)\\Appium\\node.exe"; 
    static String Appium_JS_Path="C:\\Program Files (x86)\\Appium\\node_modules\\appium\\bin\\appium.js"; 
    static AppiumDriverLocalService service; 
    static String service_url; 

    public static void appiumStart() throws Exception{ 
     service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder(). 
       usingPort(2856).usingDriverExecutable(new File(Appium_Node_Path)). 
       withAppiumJS(new File(Appium_JS_Path))); 
     service.start(); 
     Thread.sleep(25000); 
     service_url = service.getUrl().toString(); 
    } 

    public static void appiumStop() throws Exception{ 
     service.stop(); 

    } 
} 
0
public static void startAppiumServer() { 
     try { 
      Thread.sleep(3000); 
     } catch (InterruptedException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     final String appiumNodeFilePath = APPIUM_NODE_FILE_PATH; 
     final String appiumJavaScriptServerFile = APPIUM_JAVA_SCRIPT_SERVER_FILE_PATH; 
     final String appiumServerPortNumber = APPIUM_SERVER_PORT_NUMBER; 
     final String appiumServerConfigurations = "--no-reset --local-timezone --port "+ appiumServerPortNumber+ " -bp "+(Integer.parseInt(appiumServerPortNumber)+1); 
     (new Thread(){ 
      public void run(){ 
       String startCommand ="\"" + appiumNodeFilePath + "\" \""+ appiumJavaScriptServerFile + "\" "+ appiumServerConfigurations; 
       System.out.println("Server start command: "+startCommand); 
       executeCommand(startCommand); 
      } 
     }).start(); 
     try { 
      Thread.sleep(25000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

private static void executeCommand(String command) { 
     String s = null; 
     try { 
      Process p = Runtime.getRuntime().exec(command); 
      BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream())); 
      System.out.println("Appium Server Output Logs:\n"); 
      while ((s = stdInput.readLine()) != null) { 
       System.out.println(s); 
      } 
      System.out.println("Appium Server Error Logs:\n"); 
      while ((s = stdError.readLine()) != null) { 
       System.out.println(s); 
      } 
     } catch (IOException e) { 
      System.out.println("exception: "); 
      e.printStackTrace(); 
     } 
    } 

APPIUM_NODE_FILE_PATH = "C: \ Program Files (x86) \ Appium \ node.exe "; APPIUM_JAVA_SCRIPT_SERVER_FILE_PATH = "C: \ ProgramFiles (x86) \ Appium \ node_modules \ appium \ Bin \ appium.js

+0

Пожалуйста, объясните свой код –

0

Если вы заинтересованы, чтобы узнать, как это должно быть реализовано, проверьте appium-Java-клиент AppiumDriverLocalService класс

.

И так как вы используете Java в большинстве случаев его лучше использовать AppiumDriverLocalService вместо реализации собственного решения:

AppiumDriverLocalService service = AppiumDriverLocalService. 
    buildDefaultService(); 
service.start() // to start appium server 
... 
service.getUrl() // to get URL of running server 
... 
service.isRunning() // to check if appium server is alive 
... 
service.stop() // to stop appium server 
Смежные вопросы