zoukankan      html  css  js  c++  java
  • 在flask服务里面执行adb 安装命令

    今天讲的是我在flask服务里执行adb install 命令,被坑了一天

    需求是我们的安卓打包机器和我们的自动化机器不是同一台,管理人也不一样,想让每次打包后能通知到我们的服务器,然后执行后续的操作,比如安装卸载,monkey,冒烟测试用例等等

    (懒癌犯了,不想在我们的自动化服务器安装编译环境,不然直接搭建编译环境,然后我们这里再启动一个jenkins就可以了)

    1.flask写了一个get请求的接口,接收一个url参数,这里也为了方便测试,如果有url参数,就执行本次的流程,如果没有url参数,直接返回一个json串

    @app.route('/get_consultant', methods=['POST', 'GET'])
    def get_consultant():
    if request.method == "GET":
    url = request.args.get('url')
    print(url)
    if url:
    page_url = processing_url(url)
    print(page_url)
           。。。
         else:
         return json.dumps({'error': 'url is null'})
    2.然后写了个函数处理下载APP的url和存放本地的url
    def processing_pagename(url):
    """根据返回的url,判断本地有没有该文件夹,没有创建"""
    id = url.split('/')[-1]
    page_path = "d:\%s" % id
    if not os.path.exists(page_path):
    os.mkdir(page_path)
    print("下载路径:%s" % page_path)
    return page_path

    def processing_url(url):
    id = url.split('/')[-1]
    url = "https://***********/**/%s/app-**-**.apk" % id
    print("下载地址:%s" % url)
    return url

    3.接下来是是安装卸载APP的函数,就出现在这个安装函数的地方,单个运行没问题,到接口里面就安装不了
    def run_install_app(page_path):
    """安装APP"""
    cmd = "adb install -r %s" % page_path
    print("安装命令---->", str(cmd))
    adb_txt = os.popen(cmd)
    # adb_txt = subprocess.check_output(cmd).decode('utf-8')
    time.sleep(10)
    txt = adb_txt.read()
    print(txt)
    if "Success" in txt:
    print("安装成功")
    # return True
    else:
    print("安装失败")
    # return False
    def run_uninstall_app():
    """卸载APP"""
    cmd = "adb uninstall **************"
    # adb_txt = subprocess.check_output(cmd).decode('utf-8') # 需要decode,不然提示类型错误
    adb_txt = os.popen(cmd)
        txt = adb_txt.read()
    print(txt)
    if "Success" in txt:
    print("卸载成功")
    else:
    print("卸载失败")

      安装错误截图,我真的不知道怎么回事,函数路径和函数单个调试都没问题(有知道的私聊我),卸载和monkey函数都没问题

    纠结了一天,临下班想起来:我为啥一定要在接口里面执行业务?围魏救赵吧,接口获取到apk并下载完成后,写入个文件,然后写个定时任务去读取这个文件(我真是个天才)

    定时任务下一文章聊

    学习最大的乐趣在于分享,我是绝世老中医,欢迎来诊 个人qq:1978529954
  • 相关阅读:
    TSQL 常用日期格式
    TSQL数据类型研究_tinyint
    设置数据库状态
    判断存储过程、触发器、视图是否存在并删除
    TSQL日期函数
    TSQL常用日期函数
    TSQL单双引号分隔符相关
    动态存储过程
    TSQL类型转换函数
    modelsim保存仿真结果,以及打开保存的仿真结果的波形wlf文件(经过实验,真实可用)
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/11392560.html
Copyright © 2011-2022 走看看