예제 #1
0
def _run(device, name, pkg_id):
    '''打开游戏'''
    node_start_time_4 = int(time.time())
    devie_xinxi = device_xinxi.Android_device_xinxi(device).device_xinxi()
    object_1 = open_game.Ddenglu(device, name)  #调用打开app函数(##_工作流第四节点-----打开)
    open_apk = eval('object_1.hmzc_open_' + device)()
    if open_apk[0] == True:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '打开游戏', '打开游戏成功', 1, node_start_time_4, open_apk[2])
        return True
    elif open_apk[0] == False:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '打开游戏', '打开游戏失败==' + open_apk[1], 0, node_start_time_4,
            open_apk[2])
        return False
    else:
        return False
예제 #2
0
def xia_order(device, pkg_id):
    '''游戏内下单_跳转到微信'''
    node_start_time_6 = int(time.time())
    devie_xinxi = device_xinxi.Android_device_xinxi(device).device_xinxi()
    object_3 = order_wechat.Order(device)
    order_jieguo = eval('object_3.order_weixi_' +
                        device)()  ###(工作流第五节点-----下单调微信)
    if order_jieguo[0] == True:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network'],
                'order_id': order_jieguo[1]
            }, pkg_id, '下单调起微信', '下单调起微信成功', 1, node_start_time_6,
            order_jieguo[2])
        return True
    elif order_jieguo[0] == False:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '下单调起微信', '下单调起微信失败:' + order_jieguo[1], 0,
            node_start_time_6, order_jieguo[2])
        return False
    else:
        return False
예제 #3
0
def _denglu(device, name, pkg_id):
    '''登录游戏'''
    node_start_time_5 = int(time.time())
    devie_xinxi = device_xinxi.Android_device_xinxi(device).device_xinxi()
    object_2 = denglu.Ddenglu_2(device, name)  ####(##_工作流第五节点-----登录)
    hmgame_denglu = eval('object_2.hmzc_deng_lu_' + device)()
    if hmgame_denglu[0] == True:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '登录', '登录游戏成功', 1, node_start_time_5, hmgame_denglu[2])
        return True
    elif hmgame_denglu[0] == False:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '登录', '登录游失败:' + hmgame_denglu[1], 0, node_start_time_5,
            hmgame_denglu[2])
        return False
    else:
        return False
예제 #4
0
def xia_order(device,pkg_id):
    '''游戏内下单_跳转到微信'''
    node_start_time_6=int(time.time())
    devie_xinxi=device_xinxi.Android_device_xinxi(device).device_xinxi()
    order_jieguo=order_wechat.place_order(device)###(工作流第五节点-----下单调微信)
    print(order_jieguo)
    if order_jieguo[0]==True:
        order_result=order_select.select_order(order_jieguo[1])#订单状态
        if order_result=='success':
            report_API.get_images({'model':devie_xinxi['model'], 'imei':devie_xinxi['imei'], 'system_version':devie_xinxi['system_version'], 'network':devie_xinxi['network'],'order_id':order_jieguo[1]}, pkg_id, '下单调起微信', '下单调起微信成功', 1,node_start_time_6,order_jieguo[2])
            return True
        else:
             return False
    elif order_jieguo[0]==False:
        report_API.get_images({'model':devie_xinxi['model'], 'imei':devie_xinxi['imei'], 'system_version':devie_xinxi['system_version'], 'network':devie_xinxi['network']}, pkg_id, '下单调起微信', '下单调起微信失败:'+order_jieguo[1], 0,node_start_time_6,order_jieguo[2])
        return False
    else:
        return False
예제 #5
0
def run_body(device, apk_url):
    '''通过多进程方式启动_节点脚本'''
    pkg_id = apk_url[apk_url.find('pkgId') + 6:apk_url.find('&')]
    node_start_time_1 = int(time.time())
    devie_xinxi = device_xinxi.Android_device_xinxi(
        device).device_xinxi()  #获取设备信息
    print('{}--设备{}:{}'.format(ctime(), device, devie_xinxi))
    pkg = download_apk.Pretreatment(apk_url)  ##########调用下载(工作流第一节点----下载apk)
    time.sleep(0.5)
    print(
        '---------------------------设备:{}____{}----节点1-----------------------------------下载校验结果:{}'
        .format(device, apk_url[apk_url.find('&') + 3:], pkg[0]))
    log_file.log('-----------{}__{}----节点1-----------下载校验结果:{}'.format(
        device, apk_url[apk_url.find('&') + 3:][-20:], pkg[0]))
    if pkg[0] != True:
        report_API.get_images({}, pkg_id, '包体下载', '包体下载失败==' + str(pkg), 0,
                              node_start_time_1)
        print('包url异常下载失败', sql_lianj.delete_sql(apk_url))  #删除数据库记录
        exit()  #出去当前进程
    else:
        report_API.get_images({'url_apk': pkg[1]}, pkg_id, '包体下载', '包体下载成功', 1,
                              node_start_time_1)
    mulu_apk = wenjian_mulu.wen(
        os.path.dirname(__file__) + '/File_directory',
        apk_url[-20:])  #获取目录对应的任务包
    print('{}--{}--{}:File_directory下包有{}'.format(ctime(), os.getpid(), device,
                                                  mulu_apk))

    node_start_time_2 = int(time.time())
    install_result = apk_all_install.auto_install(
        device, mulu_apk[0])  #######安装apk到手机(##工作流第二节点----安装)
    time.sleep(0.5)
    print(
        '------------------------------%s__%s----节点2-------------------------------------安装返回结果:%s'
        % (device, mulu_apk[0], install_result))
    log_file.log('---------%s__%s-------节点2------安装返回结果:%s' %
                 (device, mulu_apk[0][-20:], install_result))
    if install_result == True:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '安装apk', '安装apk成功', 1, node_start_time_2)
    else:
        report_API.get_images(
            {
                'model': devie_xinxi['model'],
                'imei': devie_xinxi['imei'],
                'system_version': devie_xinxi['system_version'],
                'network': devie_xinxi['network']
            }, pkg_id, '安装apk', '安装apk失败==' + install_result, 0,
            node_start_time_2)
        print(device + '包损坏安装不了需要删除', sql_lianj.delete_sql(apk_url))  #删除数据库记录
        exit()  #出去当前进程

    node_start_time_3 = int(time.time())
    package_name = lujin_qubaoming.ApkInfo(
        os.path.dirname(__file__) + '/File_directory/' +
        mulu_apk[0]).getApkBaseInfo()  #直接创建对象调用getApkBaseInfo()方法
    img_download = download_img.run_img(
        pkg_id
    )  #根据pkg_id获取相关资源去下载图片,并返回下载结果(如果下载成功返回结果+实际路径),,(工作流第三节点--------素材校验)
    if img_download[0] == '下载成功':
        unpacking = mulu_apk_unzip.main(apk_url[apk_url.find('&') + 3:])  #本地拆包
        unpacking_verification = similarity_degree.image.img_run(
            img_download[2],
            os.path.dirname(__file__) + '/File_directory/' + unpacking[8:] +
            '/', pkg_id, img_download[1], device)  #校验素材
        print(
            '--------------------------{}--{}---{}----节点3------------------------------------拆包校验结果:{}'
            .format(os.getpid(), device, apk_url[apk_url.find('&') + 3:],
                    unpacking_verification[0]))
        log_file.log('------------{}__{}----节点3---------拆包校验结果:{}:{}'.format(
            device, apk_url[apk_url.find('&') + 3:][-20:],
            unpacking_verification[0], unpacking_verification[1]))
        time.sleep(0.5)
        if unpacking_verification[0] == True:
            report_API.get_images({'server_img': unpacking_verification[1]},
                                  pkg_id, '拆包校验', '拆包校验成功', 1,
                                  node_start_time_3)
        else:
            print('失败原因:' + unpacking_verification[1])
            report_API.get_images({}, pkg_id, '拆包校验',
                                  '拆包校验失败=' + unpacking_verification[1], 0,
                                  node_start_time_3)
            print(device + '包的素材不一致需要删除',
                  sql_lianj.delete_sql(apk_url))  #素材校验失败删库
            sys.exit()
    else:
        print(
            '-------------------pid:{}---{}__{}---节点3------------------------------后台没有配置素材无需校验'
            .format(os.getpid(), device, apk_url[apk_url.find('&') + 3:]))
        log_file.log('--------{}__{}---节点3--------后台没有配置素材无需校验'.format(
            device, apk_url[apk_url.find('&') + 3:][-20:]))
        report_API.get_images({}, pkg_id, '拆包校验', '后台没有配置素材无需校验', 1,
                              node_start_time_3)
        time.sleep(5)
    print(screen_state.isAwaked(device))  #保证手机在亮屏状态
    #若打开app成功后,就登录游戏
    aa = api_img_xiazai_main.get_images(pkg_id)  #调用获取apk资源信息
    game_list = []
    if aa['data']['channel_pinyin'] == 'dsdk' or aa['data'][
            'channel_pinyin'] == 'xy_dsdk':
        for key, value in config.game().items():
            game_list.append(key)
            print(key, value)
            params = importlib.import_module(value)  #绝对导入
            print(value)
            if aa['data']['game_original_name'] == key:
                os.system('adb -s {} shell input keyevent 3'.format(
                    device))  #初始化home页面(回到桌面)
                #os.system('adb -s {} shell rm -rf /sdcard/.dalan'.format(device))#删除本地数据库
                jieguo = params._run(device, package_name,
                                     pkg_id)  #打开游戏(工作流第四节点-----打开)
                print(
                    '----------{}--{}--{}--{}----节点4------------------------------打开游戏结果:{}'
                    .format(ctime(), os.getpid(), device,
                            apk_url[apk_url.find('&') + 3:], jieguo))
                log_file.log(
                    '-----------{}__{}----节点4----------打开游戏结果:{}'.format(
                        device, apk_url[apk_url.find('&') + 3:][-20:], jieguo))
                if jieguo == False:
                    apk_cont = sql_lianj.condition_select(apk_url)  #查询是否有标记
                    if apk_cont == None:
                        sql_lianj.updata_sql(apk_url)
                        os.system(
                            'adb -s {} shell rm -rf /sdcard/.dalan'.format(
                                device))
                        sys.exit()  #如果没有标记就需要做标记
                    elif apk_cont == 1:
                        print(device + '执行2次了还是失败,需要删除链接',
                              sql_lianj.delete_sql(apk_url))  #删除数据库记录
                        sys.exit()

                denglu = params._denglu(device, package_name,
                                        pkg_id)  #登录(工作流第五节点-----登录)
                print(
                    '--------------------{}--{}--{}---节点5----------------------------登录游戏结果:{}'
                    .format(os.getpid(), device,
                            apk_url[apk_url.find('&') + 3:], denglu))
                log_file.log(
                    '-----------{}__{}----节点5----------登录游戏结果:{}'.format(
                        device, apk_url[apk_url.find('&') + 3:][-20:], denglu))
                if denglu == False:
                    apk_cont = sql_lianj.condition_select(apk_url)
                    if apk_cont == None:
                        sql_lianj.updata_sql(apk_url)
                        os.system(
                            'adb -s {} shell rm -rf /sdcard/.dalan'.format(
                                device))
                        sys.exit()
                    elif apk_cont == 1:
                        print(device + '执行2次了还是失败,需要删除链接',
                              sql_lianj.delete_sql(apk_url))  #删除数据库记录
                        sys.exit()

                order = params.xia_order(device,
                                         pkg_id)  #游戏内下单拉微信(工作流第五节点-----下单)
                print(
                    '-------------------{}--{}--{}__{}---节点6----------------------------下单调起微信结果:{}'
                    .format(ctime(), os.getpid(), device,
                            apk_url[apk_url.find('&') + 3:], order))
                log_file.log('------{}__{}---节点6-------下单调起微信结果:{}'.format(
                    device, apk_url[apk_url.find('&') + 3:][-20:], order))
                if order == False:
                    apk_cont = sql_lianj.condition_select(apk_url)
                    if apk_cont == None:
                        sql_lianj.updata_sql(apk_url)
                        os.system(
                            'adb -s {} shell rm -rf /sdcard/.dalan'.format(
                                device))
                        sys.exit()
                    elif apk_cont == 1:
                        print(device + '执行2次了还是失败,需要删除链接',
                              sql_lianj.delete_sql(apk_url))  #删除数据库记录
                        sys.exit()
            continue
        if aa['data']['game_original_name'] not in game_list:
            node_start_time_n = int(time.time())
            print('{}--{}--{}--{}此原名游戏尚未接入,敬请期待'.format(
                ctime(), os.getpid(), device, apk_url))
            log_file.log('{}__{}此原名游戏尚未接入,敬请期待'.format(
                device, apk_url[apk_url.find('&') + 3:][-20:]))
            report_API.get_images({'Game_link': apk_url}, pkg_id, '游戏未接入',
                                  '此原名游戏尚未接入,敬请期待', 0, node_start_time_n)
    else:
        node_start_time_n1 = int(time.time())
        print('{}--{}--{}--{}_非Dalan_Dsdk渠道包,不走自动化流程'.format(
            ctime(), os.getpid(), device, apk_url))
        log_file.log('{}__{}_非Dalan_Dsdk渠道包,不走自动化流程'.format(
            device, apk_url[apk_url.find('&') + 3:][-20:]))
        report_API.get_images({'Game_link': apk_url}, pkg_id, '非大蓝渠道',
                              '非Dalan_Dsdk渠道包,不走自动化流程', 0, node_start_time_n1)
    print(device + '执行完成清除链接', sql_lianj.delete_sql(apk_url))  #删除数据库记录
    os.system('adb -s {} uninstall {}'.format(device, package_name))  #卸载执行成功的包