appium 启动关闭appium服务

def send_cmd(cmd, encoding='utf-8'):
    '''
    cmd发送命令
    :param cmd:命令
    :param encoding: 编码方式,默认utf-8,出现乱码用gbk
    :return:
    '''
    res = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                           stderr=subprocess.PIPE, encoding=encoding)
    com = res.communicate()
    value = com[0]
    res.terminate()
    return value

def start_appium(port,name):
    bp = int(port) +1
    kill_appium_server(port=port)
    kill_appium_server(port=bp)
    appium_log = os.path.join(DirPath.Logs, 'Appium_' + name + '.log')
    # 后台执行
    cmd = "start appium -p " + str(port) + " -bp " + str(
        bp) + " -g " + appium_log + " --session-override -a 127.0.0.1 --command-timeout 300"
    log.info(cmd)
    os.popen(cmd)
    time.sleep(10)

def kill_appium_server(port):
    try:
        # 查找对应端口的pid
        cmd_find = 'netstat -aon | findstr %s' % port
        text = send_cmd(cmd_find, encoding="gbk")
        if text != '':
            res = text.split("
")
            for i in res:
                if "LISTENING" in i:
                    pid = (i.split()[-1]).strip()
                    # 执行被占用端口的pid
                    cmd = 'taskkill /f /pid %s' % pid
                    res = send_cmd(cmd, encoding="gbk")
                    log.debug(str(res).strip())
                    if ("成功" in res) or ("SUCCESS".lower() in res.lower()):
                        log.debug("port %s appium server close" %str(port))
        else:
            return
    except:
        return

  

appium做安卓自动化的时候,需要用代码启动和关闭appium服务;

思路:找到服务对应的端口的进程,杀死进程;

原文地址:https://www.cnblogs.com/breakcircle/p/12673629.html