예제 #1
0
 def wrapped(self, *arg, **kwargs):
     if self.poco(text="帐号登录").exists():
         print(self.device + '在登录方式选择页面_有账号登录元素')
         self.poco("com.dalan.lgh:id/dalan_agreement_check").click(
         )  #默认没有勾选需要勾选
         self.poco(text="帐号登录").click()
         sleep(3.0)
         #判断是否还在当前页面,如果在说明反复勾选了
         if self.poco(text="帐号登录").exists():
             print(self.device + '需要反向勾选用户协议')
             self.poco("com.dalan.lgh:id/dalan_agreement_check").click(
             )  #反向勾选
             sleep(1.5)
             self.poco(text="帐号登录").click()
             sleep(3.0)
         if self.poco("com.dalan.lgh:id/dalan_password_input").exists(
         ):  #判断账号框是否存在
             for i in range(len(config.devices())):
                 if self.device in config.devices()[i]:
                     print('{}设备对应账号{}'.format(self.device,
                                               config.number()[i]))
                     self.poco("com.dalan.lgh:id/dalan_password_input"
                               ).set_text(config.number()[i])
                     sleep(1.5)
             self.poco(text="密码").set_text('123456')
             sleep(1.5)
             self.poco(text="进入游戏").click()
             sleep(4.5)
     return func(self)  #装饰完成,调用函数
예제 #2
0
def test_run():
    current_time = time.strftime("%Y-%m-%d")
    if os.path.exists(
            os.path.dirname(__file__) + '/all_log/all_print/' + current_time +
            '.log'):
        pass
    else:
        open(
            os.path.dirname(__file__) + '/all_log/all_print/' + current_time +
            '.log', 'w')
    #执行前获取文件总行数
    object = log_read.cd_file(
        os.path.dirname(__file__) + '/all_log/all_print/' + current_time +
        '.log')
    count = object.file()
    #创建sys.stdout并准备
    r_obj = log_print_test.__redirection__()  #创建sys.stdout对象
    sys.stdout = r_obj
    r_obj.to_file(
        os.path.dirname(__file__) + '/all_log/all_print/' + current_time +
        '.log')  #把print写入的文件路径
    apk_list = dalan_test()  #获取数据库链接
    r_obj.to_console(
    )  #放在print的前,则不写print数据到文件,print直接打在控制台(如果放在print后就写入文件,不在控制台打印)
    #开始实现多进程
    process.dalan_main(config.devices(), apk_list)
    print(
        '------------------------------------------------重新获取log增量文件---------------------------------------------------------------------------'
    )
    time.sleep(5)
    report = object.zai_read(count)  #读取增量
    re_read = log_read.cd_file(
        os.path.dirname(__file__) + '/all_log/part_log/' + current_time +
        '执行关键点_日志.log')
    log_log = re_read.log_re()
    log_email.email(report + '\n' + log_log)
예제 #3
0
 def hmzc_deng_lu_b5940085(self):
     if self.poco(text="帐号登录").exists():
         print('{}__欢迎进入登录选择方式页面'.format(self.device))
         self.poco(
             "com.dalan.lgh:id/dalan_agreement_check").click()  #默认没有勾选需要勾选
         sleep(1.5)
         self.poco(text="帐号登录").click()
         sleep(3)
         if self.poco(text="帐号登录").exists():
             print('{}_需要反向勾选协议'.format(self.device))
             sleep(1.5)
             self.poco("com.dalan.lgh:id/dalan_agreement_check").click(
             )  #默认没有勾选需要勾选
             sleep(1.5)
             self.poco(text="帐号登录").click()
             sleep(3)
         #判断并输入帐号
         if self.poco(textMatches='^忘记密码.*$').exists():
             for i in range(len(config.devices())):  #迭代设备个数
                 if self.device in config.devices()[i]:
                     print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format(
                         self.device,
                         config.number()[i]))
                     self.poco(
                         'com.dalan.lgh:id/dalan_password_input').set_text(
                             config.number()[i])
             self.poco('com.dalan.lgh:id/dalan_msg_input').set_text(
                 '123456')
             self.poco(text="进入游戏").click()
             sleep(5.0)
         sleep(2.0)
         if exists(
                 Template(r"hmzc_公告_mi9.png",
                          record_pos=(0.001, 0.532),
                          resolution=(1080, 2340))):
             print('{}游戏前_登录页有公告'.format(self.device))
             touch(
                 Template(r"hmzc_公告_mi9.png",
                          record_pos=(0.001, 0.532),
                          resolution=(1080, 2340)))
             sleep(2.5)
         if exists(
                 Template(r"hmzc_开始游戏_mi9.png",
                          record_pos=(-0.002, 0.706),
                          resolution=(1080, 2340))):
             touch(
                 Template(r"hmzc_开始游戏_mi9.png",
                          record_pos=(-0.002, 0.706),
                          resolution=(1080, 2340)))
             sleep(3)
         if exists(
                 Template(r"hmzc_创角_mi9.png",
                          record_pos=(0.001, 0.802),
                          resolution=(1080, 2340))):
             print('{}__已在创角页面_需要创角'.format(self.device))
             touch(
                 Template(r"hmzc_创角_mi9.png",
                          record_pos=(0.001, 0.802),
                          resolution=(1080, 2340)))
             sleep(4)
             stop_app(self.name)  #杀掉进程可跳过新手
             sleep(2)
             start_app(self.name, activity=None)
             sleep(15)
         #不走创角流程
         elif wait(Template(r"hmzc_游戏内断言.png",
                            record_pos=(0.426, -0.846),
                            resolution=(720, 1280)),
                   timeout=20):
             print('{}__登录游戏成功'.format(self.device))
             img = Screencap.GetScreen(time.time(), self.device, "")
             return True, '登录游戏成功', img[img.find(r'superdalan.com//') +
                                        16:][:-4]
     #创角后的操作
     if exists(
             Template(r"hmzc_公告_mi9.png",
                      record_pos=(0.001, 0.532),
                      resolution=(1080, 2340))):
         print('{}_再次启动跳新手--登录页有公告'.format(self.device))
         touch(
             Template(r"hmzc_公告_mi9.png",
                      record_pos=(0.001, 0.532),
                      resolution=(1080, 2340)))
         sleep(2.5)
     if exists(
             Template(r"hmzc_开始游戏_mi9.png",
                      record_pos=(-0.002, 0.706),
                      resolution=(1080, 2340))):
         touch(
             Template(r"hmzc_开始游戏_mi9.png",
                      record_pos=(-0.002, 0.706),
                      resolution=(1080, 2340)))
         if wait(Template(r"hmzc_游戏内断言.png",
                          record_pos=(0.426, -0.846),
                          resolution=(720, 1280)),
                 timeout=25):
             print('{}__登录游戏成功'.format(self.device))
             img = Screencap.GetScreen(time.time(), self.device, "")
             return True, '登录游戏成功', img[img.find(r'superdalan.com//') +
                                        16:][:-4]
     else:
         print('{}__找不到游戏内元素_未能成功进入游戏'.format(self.device))
         img = Screencap.GetScreen(time.time(), self.device, "")
         return False, '找不到游戏内元素_未能成功进入游戏', img[img.find(r'superdalan.com//'
                                                         ) + 16:][:-4]
예제 #4
0
def xy_deng_lu(name):
    clear_app(name)
    start_app(name)
    sleep(2.0)
    #判断是否有权限弹框
    if poco("com.android.packageinstaller:id/permission_deny_button").exists():
        for i in range(0, 7):  #弹框处理
            if poco("com.android.packageinstaller:id/permission_deny_button"
                    ).exists():
                poco(text="始终允许").click()
            else:
                print("已授权_或无需授权=%d" % i)
                break
    try:
        #已有账号记录
        if poco(text="同意并进入游戏").wait(15).exists():
            poco(text="同意并进入游戏").click()
            print('已进入登录_协议页面')
            sleep(20.0)
        pd_gonggao = baidu_shibie.compressImage('chen.png', 0.42, 0.09, 0.17,
                                                0.05)  #获取公告
        if pd_gonggao == '公告':
            print('有公告')
            poco().click((0.947, 0.101))
            if exists(
                    Template(r"开始游戏.png",
                             record_pos=(0.0, 0.592),
                             resolution=(720, 1280))):
                poco().click((0.502, 0.825))  #开始游戏
                print('点击开始游戏')
                sleep(25.0)
                poco().click((0.500, 0.900))  #选择角色页面_可能不用选择,为了保险还是点下
            if wait(
                    Template(r"游戏内元素.png",
                             record_pos=(-0.408, 0.831),
                             resolution=(720, 1280)), 30):
                print('成功进入游戏')
            else:
                print('进入游戏失败_未找到元素')


#新注册账号_新手机或清缓存会有
        elif poco(text="进入游戏").exists():
            poco(text="进入游戏").click()
            if poco(text="我知道了").wait(10).exists():
                poco(text="我知道了").click()
                print('注册账号成功')
                sleep(10.0)
                poco().click((0.500, 0.900))  #选择角色页面
                sleep(25.0)
                paduan = baidu_shibie.compressImage('chen.png', 0.5, 0.01,
                                                    0.15, 0.03)
            if paduan == 0:
                print('进入游戏成功')
            else:
                print('进入游戏失败_未找到元素')
        chongzhi_q = baidu_shibie.compressImage('chen.png', 0.43, 0.01, 0.21,
                                                0.03)  #充值前获取用户拥有的金额
        print('充值前的金额', chongzhi_q)
        poco().click((0.582, 0.028))  #点击顶部充值
        sleep(3.0)
        chongzhi_y = baidu_shibie.compressImage('chen.png', 0.81, 0.68, 0.13,
                                                0.03)  #获取充值页元素
        if chongzhi_y == '充值6元':
            print('已进入充值档位页面_首次充值')
            sleep(4.0)
            poco().click((0.9, 0.689))  #点击充值6元
        elif baidu_shibie.compressImage('chen.png', 0.60, 0.60, 0.20,
                                        0.10) == '6元':
            print('已进入充值档位页面_非首次充值')
            poco().click((0.696, 0.628))  #点击充值6元
        else:
            print('进入充值页面失败')
        poco(text="微信").click()  #微信支付
        sleep(4.0)
        poco(text="立即支付").click()
        print('微信支付_输入密码页')
        sleep(3.0)
        #输入支付密码
        touch((220.0, 2060.0))  #4
        touch((1202.0, 1844.0))
        touch((720.0, 1850.0))
        touch((222.0, 2268.0))
        touch((752.0, 2435.0))
        touch((777.0, 2048.0))
        sleep(2.0)
        poco(text="完成").click()  #完成后自动跳转到充值档位页面
        sleep(2.5)
        poco().click((0.934, 0.032))  #关闭充值档位_回到首页
        sleep(1.5)
        chongzhi_h = baidu_shibie.compressImage('chen.png', 0.43, 0.01, 0.15,
                                                0.03)  #充值前获取用户拥有的金额
        if int(chongzhi_h) == int(chongzhi_q) + 600:
            print('充值成功')
            return True
        elif int(chongzhi_h) == int(chongzhi_q) + 1200:
            print('首次充值双倍')
            return True
        elif int(chongzhi_h) < int(chongzhi_q) + 600:
            print('充值未到账')
            return False
        else:
            print('充值判断失败')
            return False

    except:
        print('已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)')
        Screencap.GetScreen(time.time(), config.devices(),
                            "mxd_deng_lu")  #手动截图
예제 #5
0
#!/usr/bin/env python
# encoding: utf-8

from airtest.core.api import *

from dalan_tools import Screencap, config, baidu_shibie

auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco

connect_device("Android://127.0.0.1:5037" + '/' + config.devices())
poco = AndroidUiautomationPoco()
sleep(1.5)


def xy_deng_lu(name):
    clear_app(name)
    start_app(name)
    sleep(2.0)
    #判断是否有权限弹框
    if poco("com.android.packageinstaller:id/permission_deny_button").exists():
        for i in range(0, 7):  #弹框处理
            if poco("com.android.packageinstaller:id/permission_deny_button"
                    ).exists():
                poco(text="始终允许").click()
            else:
                print("已授权_或无需授权=%d" % i)
                break
    try:
        #已有账号记录
        if poco(text="同意并进入游戏").wait(15).exists():
예제 #6
0
def mxd_deng_lu(device, name):  #冒险岛
    '''登录游戏处理操作'''
    connect_device("Android:///" + device)
    auto_setup(__file__)
    poco = AndroidUiautomationPoco()
    sleep(3.0)
    try:
        if poco(text="同意并进入游戏").exists():  #首次进入游戏
            print('{}欢迎进入登录页'.format(device))
            sleep(2.0)
            poco(text="同意并进入游戏").click()
            sleep(6.0)
            #弹窗快速注册页面
            if poco(textMatches='^我有账号.*$').exists():
                poco(textMatches='^我有账号.*$').click()
                sleep(2.0)
                if poco(textMatches='^找回密码.*$').exists():
                    for i in range(len(config.devices())):  #
                        if device in config.devices()[i]:
                            print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format(
                                device,
                                config.number()[i]))
                            poco('com.xy.qjsg:id/xy_etx_account').set_text(
                                config.number()[i])
                    poco('com.xy.qjsg:id/xy_etx_pwd').set_text('123456')
                    poco(text="进入游戏").click()
                    sleep(6.0)
                if exists(
                        Template(r"mxd_公告.png",
                                 record_pos=(-0.004, -0.176),
                                 resolution=(1920, 1080))):
                    print('{}游戏前_登录页有公告'.format(device))
                    poco().click((0.484, 0.824))  #关闭公告
                    sleep(4.0)
            elif exists(
                    Template(r"mxd_公告.png",
                             record_pos=(-0.004, -0.176),
                             resolution=(1920, 1080))):
                print('{}外部-游戏前_登录页有公告'.format(device))
                poco().click((0.484, 0.824))  #关闭公告
                sleep(3.0)
                if exists(
                        Template(r"mxd_切换账号.png",
                                 record_pos=(0.444, -0.212),
                                 resolution=(1280, 720))):
                    touch(
                        Template(r"mxd_切换账号.png",
                                 record_pos=(0.444, -0.212),
                                 resolution=(1280, 720)))
                    sleep(3.0)
            #判断是否在登录_输入账号密码页面
            if poco(textMatches='^找回密码.*$').exists():
                print('{}外部--已在登录_在输入账号密码页面'.format(device))
                for i in range(len(config.devices())):
                    if device in config.devices()[i]:
                        print('{}设备对应账号{}'.format(device, config.number()[i]))
                        poco('com.xy.qjsg:id/xy_etx_account').set_text(
                            config.number()[i])
                poco('com.xy.qjsg:id/xy_etx_pwd').set_text('123456')
                poco(text="进入游戏").click()
                sleep(6.0)
        elif poco(text="帐号登录").exists():  #新版sdk
            print(device + '在登录方式选择页面')
            poco("com.dalan.lgh:id/dalan_agreement_check").click()  #默认没有勾选需要勾选
            poco(text="帐号登录").click()
            sleep(3.0)
            #判断是否还在当前页面,如果在说明反复勾选了
            if poco(text="帐号登录").exists():
                print(device + '需要反向勾选用户协议')
                poco("com.dalan.lgh:id/dalan_agreement_check").click()  #反向勾选
                sleep(1.0)
                poco(text="帐号登录").click()
                sleep(3.0)  #即将进入帐号输入页面
            if poco(textMatches='^忘记密码.*$').exists():
                for i in range(len(config.devices())):  #
                    if device in config.devices()[i]:
                        print('已在登录_在输入账号密码页面_{}设备对应账号{}'.format(
                            device,
                            config.number()[i]))
                        poco('com.dalan.lgh:id/dalan_password_input').set_text(
                            config.number()[i])
                poco('com.dalan.lgh:id/dalan_msg_input').set_text('123456')
                poco(text="进入游戏").click()
                sleep(6.0)
                if exists(
                        Template(r"mxd_公告.png",
                                 record_pos=(-0.004, -0.176),
                                 resolution=(1920, 1080))):
                    print('{}游戏前_登录页有公告'.format(device))
                    poco().click((0.484, 0.824))  #关闭公告
                    sleep(4.0)
        else:
            print('{}找不到_同意并进入游戏,或元素超时'.format(device))

        if exists(
                Template(r"mxd_开始冒险.png",
                         threshold=0.6,
                         record_pos=(0.003, 0.198),
                         resolution=(1920, 1080))):
            poco().click((0.626, 0.676))  #点击进入选区
            sleep(3)
            poco().click((0.198, 0.220))  #点击我的角色模块
            print('{}游戏前_选择角色'.format(device))
            sleep(3.0)
            img_3625 = Template(r"mxd_3625_角色.png",
                                record_pos=(-0.037, -0.091),
                                resolution=(1920, 1080))
            img_669 = Template(r"mxd_669_角色.png",
                               record_pos=(-0.041, -0.089),
                               resolution=(1280, 720))
            img_list = [img_669, img_3625]
            for pic in img_list:
                pos = exists(pic)
                if pos:
                    print('{}_循环查询角色'.format(device))
                    touch(pos)
                    break  # 只要找到图片列表中的任何一张图片,就执行touch
                else:
                    pass
        sleep(4.0)
        poco().click([0.500, 0.845])  #开始冒险
        try:
            if wait(
                    Template(r"mxd_进入游戏按钮.png",
                             record_pos=(0.334, 0.231),
                             resolution=(1280, 720)), 18):
                touch(
                    Template(r"mxd_进入游戏按钮.png",
                             record_pos=(0.334, 0.231),
                             resolution=(1280, 720)))
                try:
                    if wait(
                            Template(r"mxd_游戏内任务.png",
                                     record_pos=(0.334, 0.231),
                                     resolution=(1280, 720)), 30):
                        print('{}进入游戏_成功'.format(device))
                        img = Screencap.GetScreen(time.time(), device, "True")
                        return True, '登录成功', img[img.find(r'superdalan.com//'
                                                          ) + 16:][:-4]
                except:
                    print('{}进入游戏异常_找不到元素'.format(device))
                    img = Screencap.GetScreen(time.time(), device, "True")
                    return False, '找不到游戏内元素_未能成功进入游戏', img[
                        img.find(r'superdalan.com//') + 16:][:-4]
        except:
            print('{}在选服后出现异常,可能在维护(-详情看截图)'.format(device))
            img = Screencap.GetScreen(time.time(), device, "True")
            return False, '在选服后出现异常,可能在维护,详情看截图', img[
                img.find(r'superdalan.com//') + 16:][:-4]
    except:
        print('{}已走异常流程_截图异常页面(原因:主要是因为没有进入指定页面_)'.format(device))
        img = Screencap.GetScreen(time.time(), device, "True")
        return False, '由于网络原因,或手机反应慢到导致元素无法找到', img[img.
                                                    find(r'superdalan.com//') +
                                                    16:][:-4]