• 通过代码启动appium服务


    如果选择npm安装的最新版appium 1.8.0以上版本,启动appium的时候,你会发现无法使用Node.js命令

    这里给出两种方法来启动appim:

    方法一: 

    /**
         * 使用AppiumServiceBuilder+AppiumDriverLocalService 开启appium服务(可以添加appium参数)
         */
        public void startAppiumServer() {
            //Set Capabilities
            cap = new DesiredCapabilities();
            cap.setCapability("noReset", "false");
            cap.setCapability("noSign", "true");
            cap.setCapability("unicodeKeyboard", true);
            cap.setCapability("resetKeyboard", true);
    
            //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 stopAppiumServer() {
            service.stop();
            Log.logInfo("Appium stopped!!");
        }
    
        public boolean checkIfServerIsRunnning(int port) {
    
            boolean isServerRunning = false;
            ServerSocket serverSocket;
            try {
                serverSocket = new ServerSocket(port);
                serverSocket.close();
            } catch (IOException e) {
                //If control comes here, then it means that the port is in use
                isServerRunning = true;
            } finally {
                serverSocket = null;
            }
            return isServerRunning;
        }

    方法二:

    /**
         * 命令行模式启动appium, 发现又是每次需要安装appium键盘,unlock 等等
         * 暂时没有很好的办法解决这个问题
         *
         */
        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"": ""true""}""");
                Thread.sleep(Constant.LONGTIME_IN_MS);
            } 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();
            }
        }

    方法三:(注意别有中午路径,可以自行转换下)

    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();
            }
        }
  • 相关阅读:
    CentOS
    Docker
    Chart的简单使用
    DataGridView中间插入数据行
    获取每个月的固定的第n个星期几
    设置只能开启一个程序实例
    DataContext与实体类
    Attribute
    Delegate
    Event
  • 原文地址:https://www.cnblogs.com/Ronaldo-HD/p/10131735.html
Copyright © 2020-2023  润新知