示例#1
0
def click_bookdate(start_date, end_date):
    """
    int类型
    预订日期函数,预订日期开始日期start_date,结束日期end_date
    """
    try:
        d(resourceId="com.yiwosi.kbb:id/tv_total_day").click()
        time.sleep(1)
        d.swipe(500, 1600, 500, 500)
        time.sleep(1)
        # temp_date = datetime.datetime.now()
        # start_date = (temp_date + datetime.timedelta(days=+start_date)).strftime("%d")
        # if int(start_date)>27:
        #     print(0)
        #     start_date = '27'
        # if start_date.startswith('0'):
        #     start_date = start_date.replace('0', '')
        # end_date = (temp_date + datetime.timedelta(days=+end_date)).strftime("%d")
        # if end_date.startswith('0'):
            # end_date = end_date.replace('0', '')
        d(text=start_date).click()
        time.sleep(1)
        d(text=end_date).click()
        time.sleep(1)
        logger.info('选择的预订起止日期:{}号-{}号'.format(start_date, end_date))
    except BaseException as e:
        send_msg(hotel_webhook, '预订日期选择出错')
        logger.error('预订日期选择出错{}'.format(e))
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
def train_city_select():
    try:
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/bord_city").click()
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/et_search").click()
        time.sleep(1)
        bord_address = random_address('list_address')
        d(focused=True).set_text(bord_address)
        time.sleep(1)
        d(text='火车站').click()
        logger.info('选择的火车站出发城市{}'.format(bord_address))
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/off_city").click()
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/et_search").click()
        time.sleep(1)
        off_address = random_address('list_address')
        d(focused=True).set_text(off_address)
        time.sleep(1)
        d(text='火车站').click()
        logger.info('选择的火车站到达城市{}'.format(off_address))
        time.sleep(1)
    except BaseException as e:
        logger.error('火车站城市选择出错{}'.format(e))
        send_msg(hotel_webhook, '火车站城市选择出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#3
0
def get_takeout_list():
    """
    获取外卖首页列表数据
    """
    try:
        takeout_click_time = time.time()
        while not d(resourceId="com.yiwosi.kbb:id/tVTitle").exists:
            h_appear_time = time.time()
            h_cost_time = h_appear_time - takeout_click_time
            if h_cost_time > 15:
                logger.warning('等待外卖列表超10s,返回上个页面重新操作')
                d.app_stop(app_name)
                takeout_click_time = time.time()
                break
        logger.info('外卖列表页耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='列表页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('外卖列表页表格数据更新成功')
    except BaseException as e:
        logger.error('外卖列表页出错{}'.format(e))
        send_msg(takeout_webhook, '外卖列表页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#4
0
def gasoil_order():
    """
    油站下单
    """
    try:
        time.sleep(1)
        # d(resourceId="com.yiwosi.kbb:id/edit_fuelAmount").click()
        amount_list = ['two', 'three', 'four']
        amount = random.choice(amount_list)
        d(resourceId="com.yiwosi.kbb:id/tv_{}_hundred".format(amount)).click()
        time.sleep(1)
        d(text="提交订单").click()
        time.sleep(2)
        if d(text="继续支付").exists:
            d(text="继续支付").click()
            time.sleep(1)

        gasoil_order_click_time = time.time()
        while not d(text="微信支付").exists:
            e_appear_time = time.time()
            e_cost_time = e_appear_time - gasoil_order_click_time
            if e_cost_time > 10:
                logger.error('收银台页等待微信支付超10s')
                d.app_stop(app_name)
                break
        logger.info('跳转收银台页耗时{}'.format(e_cost_time))
        e = EexeclData(file=target_file, sheet_name='收银台页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, e_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        price = d(resourceId="com.yiwosi.kbb:id/text_price").get_text()
        e.write_cell(i + 1, 4, '价格{}'.format(price))
        logger.info('收银台页表格数据更新成功')
        time.sleep(1)
        d.press('back')
        time.sleep(3)
        d(text="取消订单").click()
        time.sleep(1)
        d(text="确定").click()
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)

    except BaseException as e:
        logger.error('收银台出错{}'.format(e))
        send_msg(gasoil_webhook, '收银台出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#5
0
def get_adb_main_process():
    """
    脚本开始执行时获取adb主进程pid
    """
    global main_process
    adb_process = os.popen('tasklist | findstr adb').readlines()
    for process in adb_process:
        main_process = re.findall('adb.exe(.*)Console', process)[0].strip()
        logger.info('adb 主进程pid:{}'.format(main_process))
示例#6
0
def fly_city_select():
    """
    机票出发地选择
    """
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/bord_city").click()
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/search_locate_content_et").click()
        time.sleep(1)
        address = random_address('list_address')
        d(focused=True).set_text(address)
        time.sleep(2)
        logger.info('选择的出发城市是{}'.format(address))
        if d(resourceId="com.yiwosi.kbb:id/iv_empty_data").exists:
            logger.warning('没有搜到你要的城市,重新搜索')
            d.press('back')
            time.sleep(1)
            fly_city_select()
        d(resourceId="com.yiwosi.kbb:id/city_name_tv").click()
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/off_city").click()
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/search_locate_content_et").click()
        time.sleep(1)
        address = random_address('list_address')
        d(focused=True).set_text(address)
        time.sleep(2)
        if d(resourceId="com.yiwosi.kbb:id/iv_empty_data").exists:
            logger.warning('没有搜到你要的城市,重新搜索')
            fly_city_select()

        d(resourceId="com.yiwosi.kbb:id/city_name_tv").click()
        logger.info('选择的到达城市是{}'.format(address))
        e = EexeclData(file=target_file, sheet_name='列表页')
        e.write_cell(i + 1, 4, address)

    except BaseException as e:
        logger.error('城市选择出错{}'.format(e))
        send_msg(fly_webhook, '城市选择出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#7
0
def get_adb_all_process(now_time):
    """
    params ip : 设备号
    params nowtime: 时间
    脚本执行中记录adb日志,3s后杀掉进程
    """
    ip = get_adb()[0]
    os.popen('adb -s {} logcat > {}adb_{}.log'.format(ip, os.getcwd() + '/Logs/', now_time))
    time.sleep(3)
    adb_process = os.popen('tasklist | findstr adb').readlines()
    for process in adb_process:
        rest_process = re.findall('adb.exe(.*)Console', process)[0].strip()
        if rest_process != main_process:
            logger.info('adb 非主进程pid:{}'.format(rest_process))
            os.popen('taskkill /pid {} /f'.format(rest_process))
            logger.info('已杀掉非主进程pid:{}'.format(rest_process))
    os.popen('adb -s {} logcat -c'.format(ip))
示例#8
0
def pre_test(category):
    """
    前置操作
    paramas: app首页的类目名称,如酒店,机票
    """
    try:
        ip = get_adb()[0]
        d = u2.connect(ip)
        if not d.info.get('screenOn'):
            # 如黑屏,则解锁
            d.screen_on()
            time.sleep(1)
            d.swipe_ext("up", 0.7)
            logger.info('检测到已锁屏,已解锁')
        d.watcher.when('resourceId="android:id/aerr_restart"').click()
        d.app_start(app_name)
        time.sleep(5)
        if d(text='稍后再说').exists:
            d(text='稍后再说').click()
            logger.warning('检测到安卓app存在新版本,请及时更新')
            time.sleep(1)
        # app_update()
        d(text='首页').click()
        time.sleep(1)
        d(text=category).click()
        logger.info('已打开{}类目'.format(category))
        time.sleep(1)
    except BaseException as e:
        logger.error('{}前置操作出错_andriod_{}'.format(category,e))
        if category == '酒店':
            send_msg(hotel_webhook, '{}前置操作出错_andriod'.format(category))
        elif category == '机票':
            send_msg(fly_webhook, '{}前置操作出错_andriod'.format(category))
        elif category == '外卖':
            send_msg(takeout_webhook, '{}前置操作出错_andriod'.format(category))
        elif category == '打车':
            send_msg(taxi_webhook, '{}前置操作出错_andriod'.format(category))
        elif category == '火车票':
            send_msg(train_webhook, '{}前置操作出错_andriod'.format(category))
        elif category == '加油':
            send_msg(gasoil_webhook, '{}前置操作出错_andriod'.format(category))                        
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        # d.screenshot(screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#9
0
def send_msg(webhook, e):
    """
    发送消息企业微信群消息方法
    webhook: 企业微信机器人webhook地址
    :return:
    """
    header = {"Content-Type": "application/json"}
    data = {
        "msgtype": "text",
        "text": {
            "content": "{}".format(e)
            # "mentioned_mobile_list": ["13530195722"]
        }
    }
    try:
        data_json = json.dumps(data)
        # requests.post(url=webhook, data=data_json, headers=header)
        logger.info('企业微信机器人消息发送成功')
    except BaseException as e:
        logger.error('企业微信机器人消息发送失败{}'.format(e))
def train_date_select(start_date):
    try:
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/text_ticket_date").click()
        time.sleep(1)
        if d(text='今天').exists:
            # 为避免选择到今天之前不可点击的日期,下滑一页随机点击日期
            d.swipe(500, 1600, 500, 500)
            time.sleep(1)
        d(text=start_date).click()
        time.sleep(1)
        logger.info('选择的火车票预订日期:{}号'.format(start_date))
    except BaseException as e:
        send_msg(train_webhook, '火车票预订日期')
        logger.error('火车票预订日期{}'.format(e))
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#11
0
def takeout_order():
    # 提交订单页
    # if d(text='选择地址').exists:
    #     d(text='选择地址').click()
    #     time.sleep(1)
    try:
        d(resourceId="com.yiwosi.kbb:id/tViewPay").click()
        takeout_order_click_time = time.time()
        while not d(text="微信支付").exists:
                    e_appear_time = time.time()
                    e_cost_time = e_appear_time - takeout_order_click_time
                    if e_cost_time > 10:
                        logger.error('收银台页等待微信支付超10s')
        e_appear_time = time.time()
        e_cost_time = e_appear_time - takeout_order_click_time
        logger.info('跳转收银台页耗时{}'.format(e_cost_time))
        e = EexeclData(file=target_file, sheet_name='收银台页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, e_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        price = d(resourceId="com.yiwosi.kbb:id/text_price").get_text()
        e.write_cell(i + 1, 4, '价格{}'.format(price))
        logger.info('收银台页表格数据更新成功')
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)

    except BaseException as e:
        logger.error('收银台出错{}'.format(e))
        send_msg(takeout_webhook, '收银台出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#12
0
def hotel_city_select():
    """
    酒店选择
    """
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/tv_location").click()
        time.sleep(1)
        address = random_address('list_address')
        d(resourceId="com.yiwosi.kbb:id/search_locate_content_et").click()
        d(focused=True).set_text(address)
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/city_name_tv").click()
        logger.info('选择的城市是{}'.format(address))
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/et_budget").click()
        time.sleep(1)
        room_rate = random_address('list_room_rate')
        d(focused=True).set_text(room_rate)
        time.sleep(1)
        if d(resourceId="com.yiwosi.kbb:id/iv_delete").exists:
            d(resourceId="com.yiwosi.kbb:id/iv_delete").click()
        time.sleep(1)
        d.xpath('//*[@resource-id="com.yiwosi.kbb:id/ll_center"]/android.widget.RelativeLayout[4]').click()
        time.sleep(1)
        hotel_brand = random_address('list_hotel_brand')
        d(resourceId="com.yiwosi.kbb:id/item_tv", text=hotel_brand).click()
        logger.info('选择的品牌是{}'.format(hotel_brand))
        e = EexeclData(file=target_file, sheet_name='列表页')
        e.write_cell(i + 1, 4, address + hotel_brand)

    except BaseException as e:
        logger.error('酒店品牌选择出错{}'.format(e))
        send_msg(hotel_webhook, '酒店品牌选择出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#13
0
def get_menu():
    try:
        a = randint(1, 5)
        for m in range(a):
            d.swipe(500, 1000, 500, 300)
            time.sleep(1)
        takeout_name = d(resourceId="com.yiwosi.kbb:id/tVTitle")[a].get_text()
        logger.info('点击的外卖是{}'.format(takeout_name))
        d(resourceId="com.yiwosi.kbb:id/tVTitle")[a].click()
        takeout_get_menu_time = time.time()
        while not d(resourceId="com.yiwosi.kbb:id/tv_price").exists:
            h_appear_time = time.time()
            h_cost_time = h_appear_time - takeout_get_menu_time
            if h_cost_time > 15:
                logger.warning('等待店铺商品超15s,返回上个页面重新操作')
                d.app_stop(app_name)
                takeout_get_menu_time = time.time()
                break
        logger.info('外卖店铺商品详情页耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='详情页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('外卖店铺商品详情页表格数据更新成功')
    except BaseException as e:
        logger.error('外卖店铺商品详情页出错{}'.format(e))
        send_msg(takeout_webhook, '外卖店铺商品详情页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
def tran_list():
    click_time = time.time()
    d(text="搜索").click()
    logger.info("点击了火车票搜索")
    while not d(resourceId="com.yiwosi.kbb:id/text_start_time").exists:
        h_appear_time = time.time()
        h_cost_time = h_appear_time - click_time
        if d(text='重新查询').exists:
            d.pess('back')
            time.sleep(1)
            train_city_select()
            tran_list()
            break
        elif h_cost_time > 15:
            logger.warning('等待火车票列表超10s,返回上个页面重新操作')
            d.app_stop(app_name)
            click_time = time.time()
            break
    logger.info('火车票列表页耗时{}'.format(h_cost_time))
    e = EexeclData(file=target_file, sheet_name='列表页')
    e.write_cell(i + 1, 1, i)
    e.write_cell(i + 1, 2, h_cost_time)
    now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
    e.write_cell(i + 1, 3, now_time)
    logger.info('火车票列表页数据更新成功')
示例#15
0
def click_bookdate(start_date):
    """
    int类型
    预订日期函数,预订日期开始日期start_date,结束日期end_date
    """
    try:
        d(resourceId="com.yiwosi.kbb:id/text_ticket_date").click()
        time.sleep(1)
        if d(text='今日').exists:
            # 为避免选择到今天之前不可点击的日期,下滑一页随机点击日期
            d.swipe(500, 1600, 500, 500)
            time.sleep(1)
        d(text=start_date).click()
        time.sleep(1)
        logger.info('选择的机票预订日期:{}号'.format(start_date))
    except BaseException as e:
        send_msg(fly_webhook, '机票预订日期')
        logger.error('机票预订日期{}'.format(e))
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#16
0
def f_pre_test():
    """
    定义机票的前置操作
    """
    try:
        d.watcher.when('resourceId="android:id/aerr_restart"').click()
        d.app_start(app_name)
        time.sleep(1)
        logger.info('app成功打开')
        if d(text='稍后再说').exists:
            d(text='稍后再说').click()
            time.sleep(1)
        d(text='首页').click()
        time.sleep(1)
        d(text='机票').click()
        time.sleep(1)
    except BaseException as e:
        send_msg(fly_webhook, e)
        logger.error('机票前置操作出错{}'.format(e))
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#17
0
def add_menu():
    try:
        time.sleep(1)

        if d(resourceId="com.yiwosi.kbb:id/car_badge").exists:
        # 情况购物车
            d(resourceId="com.yiwosi.kbb:id/iv_shop_car").click()
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tViewClear").click()
            time.sleep(1)
            d(text='清空').click()
            time.sleep(2)
        
        for m in range(4):
            d.swipe(500, 1500, 500, 300)
            time.sleep(1)
            # 点击加入购物车按钮
            d(resourceId="com.yiwosi.kbb:id/addbutton")[m].click()
            time.sleep(1)
            if d(resourceId="com.yiwosi.kbb:id/tViewOK").exists:
                d(resourceId="com.yiwosi.kbb:id/tViewOK").click()
                time.sleep(1)
            m+=1
        logger.info('购物车数据添加成功')
        time.sleep(1)
        # 点击去结算按钮
        d(resourceId="com.yiwosi.kbb:id/car_limit").click()
        takeout_add_menu_time = time.time()
        while not d(resourceId="com.yiwosi.kbb:id/text_show_time").exists:
            # 判断送达时间是否存在
            h_appear_time = time.time()
            h_cost_time = h_appear_time - takeout_add_menu_time
            if h_cost_time > 15:
                logger.warning('等待提交订单页面超15s,返回上个页面重新操作')
                takeout_add_menu_time = time.time()
                break
        logger.info('提交订单页面耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='提交订单页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('提交订单页面表格数据更新成功')
        time.sleep(1)
    except BaseException as e:
        logger.error('提交订单页面出错{}'.format(e))
        send_msg(takeout_webhook, '提交订单页面出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#18
0
def ios_pre_test(category):
    """
    IOS前置操作
    paramas: app首页的类目名称,如酒店,机票
    """
    try:
        if c.locked():
            # 检查屏幕状态,如锁屏,则解锁
            c.unlock
            logger.info('检测到已锁屏,已解锁')
            print('检测到已锁屏,已解锁')
            time.sleep(1)
        elif c(text='稍后再说').exists:
            c(text='稍后再说').tap()
            logger.info('检测到app有新版本,请及时更新')
            print('检测到app有新版本,请及时更新')
        time.sleep(3)
        logger.info('IOS超能海豹打开成功')
        print('IOS超能海豹打开成功')
        c(text='首页').tap()
        time.sleep(1)
        c(text=category).tap()
        time.sleep(1)
        logger.info('已点击酒店类目')
        print('已点击酒店类目')
    except BaseException as e:
        logger.error('{}前置操作出错_IOS_{}'.format(category,e))
        if category == '酒店':
            send_msg(hotel_webhook, '{}前置操作出错_IOS'.format(category))
        elif category == '机票':
            send_msg(fly_webhook, '{}前置操作出错_IOS'.format(category))
        elif category == '外卖':
            send_msg(takeout_webhook, '{}前置操作出错_IOS'.format(category))
        elif category == '打车':
            send_msg(taxi_webhook, '{}前置操作出错_IOS'.format(category))
        elif category == '火车票':
            send_msg(train_webhook, '{}前置操作出错_IOS'.format(category))
        elif category == '加油':
            send_msg(gasoil_webhook, '{}前置操作出错_IOS'.format(category))                        
        now_time = time.strftime("%m_%d_%H_%M_%S", time.localtime())
        # c.screenshot(h_ios_screenshot_path+'{}.png'.format(now_time))
        time.sleep(1)
示例#19
0
def get_gasoil_detail():
    """
    获取油站详情
    """
    try:
        a = randint(1, 6)
        for m in range(a):
            d.swipe(500, 1000, 500, 300)
            time.sleep(1)
        # 选择第一个油站
        gasoil_station_name = d(
            resourceId="com.yiwosi.kbb:id/text_station_name")[0].get_text()
        logger.info('点击的油站是{}'.format(gasoil_station_name))
        d(resourceId="com.yiwosi.kbb:id/text_station_name")[0].click()
        get_gasoil_detail_time = time.time()
        while not d(text="加油金额").exists:
            h_appear_time = time.time()
            h_cost_time = h_appear_time - get_gasoil_detail_time
            if h_cost_time > 15:
                logger.warning('等待油站详情超15s,返回上个页面重新操作')
                d.app_stop(app_name)
                get_gasoil_detail_time = time.time()
                break
        logger.info('提交订单页面耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='提交订单页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('提交订单页面表格数据更新成功')
        time.sleep(1)
    except BaseException as e:
        logger.error('提交订单页出错{}'.format(e))
        send_msg(gasoil_webhook, '提交订单页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#20
0


if __name__ == '__main__':

    # 企业微信hotel_webhook地址
    start_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
    file_name = start_time + "Hotel.xlsx"
    source_file = os.getcwd() + '/Result/Result.xlsx'
    target_file = os.getcwd() + '/Result/' + file_name
    copy_result(source_file, target_file)
    # ip = get_adb()[0] # 输出第一个设备
    get_adb_main_process() # 脚本开始执行时获取adb主进程pid
    # app_name = 'com.yiwosi.kbb'  # 超能海豹包名
    out1 = os.popen('adb -s {} shell pm dump  com.yiwosi.kbb | findstr version'.format(ip)).readlines()
    logger.info('当前运行app信息:{}'.format(out1))
    out2 = os.popen('adb -s {} shell getprop ro.build.version.release'.format(ip)).readlines()
    logger.info('当前运行安卓版本:{}'.format(out2))
    ex = EexeclData(file=target_file, sheet_name='结果汇总页')
    ex.write_cell(26, 2, ' 超能海豹版本:'+out1[1]+' 安卓版本:'+out2[0]) # 将app及运行环境写入表格
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    d.watcher.start()
    d.watcher.run()
    os.popen('adb -s {} logcat -c'.format(ip))
    i = 1
    while i < 20:  # 测试次数
        logger.info('第{}次执行'.format(i))
        pre_test('酒店')
        start_date = random_address('list_hotel_date')
        click_bookdate(start_date, start_date+1)
        hotel_city_select()
        d(resourceId="com.yiwosi.kbb:id/text_train_no")[count].click()
    time.sleep(1)
    if d(text='预订').exists:
        d(text='预订').click()


if __name__ == "__main__":

    ip = get_adb()[0]
    d = u2.connect(ip)
    start_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
    file_name = start_time + "Train.xlsx"
    source_file = os.getcwd() + '/Result/Result.xlsx'
    target_file = os.getcwd() + '/Result/' + file_name
    file_create_time = time.strftime("%Y%m%d_%H%M%S", time.localtime())
    t_screenshot_path = os.getcwd() + '\\screenshot\\Train\\{}\\'.format(
        file_create_time)
    if not os.path.exists(t_screenshot_path):  # 如果目录不存在则创建
        os.makedirs(t_screenshot_path)
    copy_result(source_file, target_file)
    get_adb_main_process()
    i = 0
    while i < android_train_test_times:
        i += 1
        app_update()
        logger.info('火车票第{}次执行'.format(i))
        pre_test(category='火车票')
        train_city_select()
        start_date = random_address('list_hotel_date')
        train_date_select(start_date)
示例#22
0
def hotel_list():
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:
        # d.send_keys(room_rate, clear=True)
        time.sleep(1)
        d(text="搜索酒店").click()
        logger.info("点击了搜索酒店")
        click_time = time.time()
        while not d(resourceId="com.yiwosi.kbb:id/text_name").exists:
            # 接口超时处理
            # 当超时时间大于10s时返回上一层,重新操作
            h_appear_time = time.time()
            h_cost_time = h_appear_time - click_time
            if d(resourceId="com.yiwosi.kbb:id/text_no_room_type").exists:
                logger.warning('没有搜索到酒店,开始返回上个页面重新操作')
                time.sleep(1)
                d.press('back')
                hotel_city_select()
                hotel_list()
                break
            if h_cost_time > 10:
                logger.warning('等待酒店名称超10s,返回上个页面重新操作')
                d.press('back')
                time.sleep(1)
                hotel_city_select()
                hotel_list()
                # d(text="搜索酒店").click()
                # logger.info("点击了搜索酒店")
                click_time = time.time()
                break
        
        # if d(resourceId="com.yiwosi.kbb:id/text_no_room_type").exists:
        #     logger.warning('没有搜索到酒店,开始返回上个页面重新操作')
        #     time.sleep(1)
        #     d.press('back')
        #     hotel_city_select()
        #     hotel_list()
        # else:
        h_appear_time = time.time()
        h_cost_time = h_appear_time - click_time
        logger.info('列表页耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='列表页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('列表页表格数据更新成功')
        
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        get_adb_all_process(now_time)
        file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        with open(file_name, 'r', encoding='utf8') as file:
            out_pri = file.read()
            try:
                checkUpgrade_elapsed = re.findall('checkUpgrade","data":{"upgrade":null},"elapsed":(.*),"req_sn":', out_pri.strip())
                logger.info('checkUpgrade:{}'.format(checkUpgrade_elapsed[0]))
                e.write_cell(i + 1, 7, checkUpgrade_elapsed[0])
            except:
                pass

            try:

                couponsBanner_elapsed1 = re.findall('"unreceived_coupons":(.*),"req_sn":', out_pri.strip())
                couponsBanner_elapsed = re.findall(r'\d+\.\d+', str(couponsBanner_elapsed1))
                logger.info('couponsBanner_elapsed:{}'.format(couponsBanner_elapsed[0]))  
                e.write_cell(i + 1, 8, couponsBanner_elapsed[0])
            except:
                pass

            try:
                brand_elapsed = re.findall('单床房"}]}],"elapsed":(.*)}', out_pri.strip())
                logger.info('brand_elapsed:{}'.format(brand_elapsed[0]))
                e.write_cell(i + 1, 9, brand_elapsed[0])
            except:
                pass

            try:
                createUserIntegrate1 = re.findall('createUserIntegrate(.*)}', out_pri.strip())
                createUserIntegrate = re.findall('"elapsed":(.*)', str(createUserIntegrate1[0]))
                logger.info('createUserIntegrate:{}'.format(createUserIntegrate[0]))
                e.write_cell(i + 1, 6, createUserIntegrate[0])
            except:
                pass

            try:
                hotel_list1 = re.findall('精选双早/延迟退房"]}},"elapsed":(.*)}', out_pri.strip())
                logger.info('brand_elapsed:{}'.format(hotel_list1[0]))
                e.write_cell(i + 1, 10, hotel_list1[0])
            except:
                pass


    except BaseException as e:
        logger.error('列表页出错{}'.format(e))
        send_msg(hotel_webhook, '列表页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#23
0
def hotel_detail():
    """
    酒店详情
    """
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:   
        time.sleep(1)
        a = randint(0, 3)
        for m in range(a):
            d.swipe(500, 1000, 500, 300)
            time.sleep(1)
        time.sleep(1)
        count_hotel = d(resourceId="com.yiwosi.kbb:id/text_name").count
        if count_hotel > 2:
            c = randint(0, count_hotel - 2)
        else:
            c = 0
        # 	com.yiwosi.kbb:id/text_room_type_name
        hotel_name = d(resourceId="com.yiwosi.kbb:id/text_name")[c].get_text()
        logger.info('点击的酒店是{}'.format(hotel_name))
        b_click_time = time.time()
        d(resourceId="com.yiwosi.kbb:id/text_name")[c].click()
        while not d(resourceId="com.yiwosi.kbb:id/text_hotel_name").exists:
            # 接口超时处理
            # 当超时时间大于10s时返回上一层,重新操作
            b_appear_time = time.time()
            b_cost_time = b_appear_time - b_click_time
            if b_cost_time > 10:
                logger.warning('等待酒店房型超10s,返回上个页面重新操作')
                d.press('back')
                time.sleep(1)
                d.press('back')
                time.sleep(1)
                hotel_city_select()
                hotel_list()
                hotel_detail()
                break
        b_appear_time = time.time()
        b_cost_time = b_appear_time - b_click_time
        logger.info('酒店详情页耗时{}'.format(b_cost_time))
        e = EexeclData(file=target_file, sheet_name='详情页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, b_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        e.write_cell(i + 1, 4, hotel_name)
        logger.info('详情页表格数据更新成功')
        time.sleep(1)
        d.swipe(500, 1000, 500, 300)
        if d(text="未搜索到相关店铺,换个关键字试试").exists and d(text="差旅标准低于房型价格,无积分房型,请修改差旅标准").exists:
            logger.warning('没有搜索到酒店房型,开始返回上个页面重新操作')
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            hotel_city_select()
            hotel_list()
            hotel_detail()
        
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        get_adb_all_process(now_time)
        file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        with open(file_name, 'r', encoding='utf8') as file:
            out_pri = file.read()
            try:
                hotel_detail_elapsed1 = re.findall('third_hotel_id":(.*)', out_pri.strip())
                hotel_detail_elapsed = re.findall('"elapsed":(.*)}', str(hotel_detail_elapsed1[0]).strip())
                logger.info('hotel_detail_elapsed:{}'.format(hotel_detail_elapsed[0]))
                e.write_cell(i + 1, 6, hotel_detail_elapsed[0])
            except:
                pass

    except BaseException as e:
        logger.error('详情页出错{}'.format(e))
        send_msg(hotel_webhook, '详情页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#24
0
def hotel_roomtype():
    try:
        time.sleep(1)
        if d(text="展开").exists:
            d(text="展开").click()
            time.sleep(1)
            d.swipe(500, 1000, 500, 300)
            time.sleep(1)
            d_click_time = time.time()
            d(resourceId="com.yiwosi.kbb:id/text_breakfast").click()
        else:
            d_click_time = time.time()
            d(resourceId="com.yiwosi.kbb:id/text_breakfast").click()
        while not d(resourceId="com.yiwosi.kbb:id/tViewBook").exists:
            d_appear_time = time.time()
            d_cost_time = d_appear_time - d_click_time
            if d_cost_time > 10:
                logger.warning('等待预订按钮超10s,返回上个页面重新操作')
                d.press('back')
                time.sleep(1)
                d.press('back')
                time.sleep(1)
                d.press('back')
                time.sleep(1)
                hotel_city_select()
                hotel_list()
                hotel_detail()
                break
        d_appear_time = time.time()
        d_cost_time = d_appear_time - d_click_time
        time.sleep(1)
        text_room_type = d(resourceId="com.yiwosi.kbb:id/text_room_type").get_text()
        logger.info('点击的提交订单页{}'.format(text_room_type))
        logger.info('提交订单页耗时{}'.format(d_cost_time))
        e = EexeclData(file=target_file, sheet_name='提交订单页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, d_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        e.write_cell(i + 1, 4, text_room_type)
        logger.info('提交订单页表格数据更新成功')
        time.sleep(1)
        d(resourceId="com.yiwosi.kbb:id/tViewBook").click()
        time.sleep(1)
        if d(text="确认").exists:
            d(text="确认").click()
            logger.info("酒店房型太火爆了,返回重新选择")
            time.sleep(1)
            d.press("back")
            time.sleep(1)
            if d(text="狠心离开").exists:
                d(text="狠心离开").click()
                time.sleep(1)
            d.press("back")
            time.sleep(1)
            hotel_name = d(resourceId="com.yiwosi.kbb:id/text_name")[0].get_text()
            logger.info('点击的酒店是{}'.format(hotel_name))
            d(resourceId="com.yiwosi.kbb:id/text_name")[0].click()
            time.sleep(1)
            if d(text="展开").exists:
                d(text="展开").click()
                time.sleep(1)
                d.swipe(500, 1000, 500, 300)
                time.sleep(1)
                d(resourceId="com.yiwosi.kbb:id/text_breakfast").click()
            else:
                d(resourceId="com.yiwosi.kbb:id/text_breakfast").click()
            
            text_room_type = d(resourceId="com.yiwosi.kbb:id/text_room_type").get_text()
            logger.info('点击的提交订单页{}'.format(text_room_type))
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tViewBook").click()
            time.sleep(1)
        # if not d(resourceId="com.yiwosi.kbb:id/text_hotel_name").exists:
        #     text_hotel_name = d(resourceId="com.yiwosi.kbb:id/text_hotel_name").get_text()
        #     logger.error('提交订单页异常,当前酒店名称{}'.format(text_hotel_name))
        #     send_msg(hotel_webhook, '提交订单页异常')
        #     os.popen('adb -s {} logcat - c > {}adb.log'.format(ip, now_time))
        #     now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        #     d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        #     time.sleep(1)

        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        get_adb_all_process(now_time)
        file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        with open(file_name, 'r', encoding='utf8') as file:
            out_pri = file.read()
            try:
                hotel_detail_elapsed1 = re.findall('third_hotel_id":(.*)', out_pri.strip())
                hotel_detail_elapsed = re.findall('"elapsed":(.*)', str(hotel_detail_elapsed1[0]).strip())
                logger.info('hotel_detail_elapsed:{}'.format(hotel_detail_elapsed[0]))
                e.write_cell(i + 1, 6, hotel_detail_elapsed[0])
            except:
                pass
            try:
                order_prepare = re.findall('night_num":1},"elapsed":(.*)}', out_pri.strip())
                logger.info('order_prepare{}'.format(order_prepare[0]))
                e.write_cell(i + 1, 6, order_prepare[0])
            except:
                pass
            try:
                points_index1 = re.findall('"equal_to_rmb":(.*)"req_sn"', out_pri.strip())
                points_index = re.findall('"elapsed":(.*),', points_index1[0])
                logger.info('points_index{}'.format(points_index[0]))
                e.write_cell(i + 1, 7, points_index[0])
            except:
                pass
            try:
                titles1 = re.findall('titles(.*)}', out_pri.strip())
                titles = re.findall('elapsed":(.*)', titles1[0])
                logger.info('titles{}'.format(titles[0]))
                e.write_cell(i + 1, 8, titles[0])
            except:
                pass

            try:
                getUserLastOrderById1 = re.findall('"message":"getUserLastOrderById",(.*)}', out_pri.strip())
                getUserLastOrderById = re.findall('elapsed":(.*)', getUserLastOrderById1[0])
                logger.info('getUserLastOrderById{}'.format(getUserLastOrderById[0]))
                e.write_cell(i + 1, 9, getUserLastOrderById[0])
            except:
                pass

            try:
                availableCoupons1 = re.findall('"use_platform":"0"(.*)', out_pri.strip())
                availableCoupons = re.findall('"elapsed":(.*),"req_sn":', availableCoupons1[-1])
                logger.info('availableCoupons{}'.format(availableCoupons[0]))
                e.write_cell(i + 1, 10, availableCoupons[0])
            except:
                pass

    except BaseException as e:
        logger.error('提交订单页出错{}'.format(e))
        send_msg(hotel_webhook, '提交订单页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#25
0
def create_hotel_order():
    try:
        time.sleep(3)
        if not d(resourceId="com.yiwosi.kbb:id/price").exists:
            logger.error('订单明细价格超过5秒未返回')
            send_msg(hotel_webhook, '订单明细价格超过5秒未返回')
            now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
            d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
            time.sleep(1)
            d.app_stop(app_name)
        else:
            d(text="提交订单").click()
            e_click_time = time.time()
            logger.info('点击了提交订单')
            while not d(text="微信支付").exists:
                e_appear_time = time.time()
                e_cost_time = e_appear_time - e_click_time
                if e_cost_time > 10:
                    logger.error('等待微信支付超10s')
                    # d.press('back')
                    # time.sleep(1)
                    # if d(text='狠心离开').exists:
                    #     d(text='狠心离开').click()
                    #     time.sleep(1)
                    # hotel_detail()
                    # create_hotel_order()
                    break
            e_appear_time = time.time()
            e_cost_time = e_appear_time - e_click_time
            logger.info('跳转收银台页耗时{}'.format(e_cost_time))
            e = EexeclData(file=target_file, sheet_name='收银台页')
            e.write_cell(i + 1, 1, i)
            e.write_cell(i + 1, 2, e_cost_time)
            now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
            e.write_cell(i + 1, 3, now_time)
            price = d(resourceId="com.yiwosi.kbb:id/text_price").get_text()
            e.write_cell(i + 1, 4, '价格{}'.format(price))
            logger.info('收银台页表格数据更新成功')

            now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
            get_adb_all_process(now_time)
            file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
            with open(file_name, 'r', encoding='utf8') as file:
                out_pri = file.read()
                try:
                    order_create1 = re.findall('"contact_name":"罗松",(.*)}', out_pri.strip())
                    order_create = re.findall('"elapsed":(.*)', order_create1[0])
                    logger.info('order_create{}'.format(order_create[0]))
                    e.write_cell(i + 1, 6, order_create[0])
                except:
                    pass

                try:
                    inst_periods1 = re.findall('yearly_rate":(.*)}', out_pri.strip())
                    inst_periods = re.findall('elapsed":(.*),', inst_periods1[0])
                    logger.info('inst_periods{}'.format(inst_periods[0]))
                    e.write_cell(i + 1, 7, inst_periods[0])
                except:
                    pass

                try:
                    instPlanPreview1 = re.findall('"instPlanPreview",(.*)', out_pri.strip())
                    instPlanPreview = re.findall('"elapsed":(.*),', instPlanPreview1[0])
                    logger.info('instPlanPreview{}'.format(instPlanPreview[0]))
                    e.write_cell(i + 1, 8, instPlanPreview[0])
                except:
                    pass

            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/image_select_pay_type_wechat")
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tViewAct03").click()
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tv_dialog_fragment_sure").click()
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tViewLowerPrice").click()
            time.sleep(1)
            d(resourceId="com.yiwosi.kbb:id/tViewSubmit").click()
            d.press('back')
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            d.press('back')
            time.sleep(1)
    except BaseException as e:
        logger.error('收银台出错{}'.format(e))
        send_msg(hotel_webhook, '收银台出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(h_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#26
0
def get_gasoil_list():
    """
    加油列表页
    """
    global gasoline_list_elapsed, national_price_elapsed, coupons_banner_elapsed
    try:

        gasoil_click_time = time.time()
        while not d(resourceId="com.yiwosi.kbb:id/text_station_name").exists:
            h_appear_time = time.time()
            h_cost_time = h_appear_time - gasoil_click_time
            if h_cost_time > 15:
                logger.warning('等待加油列表超10s,返回上个页面重新操作')
                d.app_stop(app_name)
                gasoil_click_time = time.time()
                break
        h_appear_time = time.time()
        h_cost_time = h_appear_time - gasoil_click_time
        logger.info('加油列表页耗时{}'.format(h_cost_time))
        e = EexeclData(file=target_file, sheet_name='列表页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, h_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('加油列表表格数据更新成功')

        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        get_adb_all_process(now_time)
        file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        with open(file_name, 'r', encoding='utf8') as file:
            out_pri = file.read()
            # 获取加油列表/api/gasoline/list 耗时
            gasoline_list_elapsed1 = re.findall('"station_img"(.*)',
                                                out_pri.strip())
            gasoline_list_elapsed = re.findall('"elapsed":(.*)}',
                                               str(gasoline_list_elapsed1))[0]
            logger.info(
                'gasoline_list_elapsed:{}'.format(gasoline_list_elapsed))
            e.write_cell(i + 1, 6, gasoline_list_elapsed)
            e.write_cell(1, 6, "gasoline/list")

            # 获取加油列表/api/national-price 耗时
            national_price_elapsed1 = re.findall('getNationalPrice(.*)',
                                                 out_pri.strip())
            national_price_elapsed = re.findall(
                '"elapsed":(.*)}', str(national_price_elapsed1))[0]
            logger.info(
                'national_price_elapsed:{}'.format(national_price_elapsed))
            e.write_cell(i + 1, 7, national_price_elapsed)
            e.write_cell(1, 7, "national-price")

            # 获取加油列表/api/coupons/banner 耗时
            # coupons_banner_elapsed1 = re.findall('discount_periods(.*)', out_pri.strip())
            # coupons_banner_elapsed = re.findall('"elapsed":(.*),"req_sn"', str(coupons_banner_elapsed1))[0]
            # logger.info('coupons_banner_elapsed:{}'.format(coupons_banner_elapsed))
            # e.write_cell(i + 1, 8, coupons_banner_elapsed)
            # e.write_cell(1, 8, "coupons/banner")

            # /api/banners
            # banners_elapsed1 = re.findall('"message":"banners","data":{"banners"(.*)', out_pri.strip())
            # banners_elapsed = re.findall('"elapsed":(.*),"req_sn"', str(banners_elapsed1))[0]
            # logger.info('banners_elapsed:{}'.format(banners_elapsed))
            # e.write_cell(i + 1, 8, banners_elapsed)
            # e.write_cell(1, 8, "/api/banners")

    except BaseException as e:
        logger.error('加油列表出错{}'.format(e))
        send_msg(gasoil_webhook, '加油列表出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
示例#27
0
def fly_list():
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:
        time.sleep(1)
        click_time = time.time()
        d(text="搜索").click()
        logger.info("点击了机票搜索")
        while not d(text="时间").exists:
            # 接口超时处理
            # 当超时时间大于10s时返回上一层,重新操作
            h_appear_time = time.time()
            h_cost_time = h_appear_time - click_time
            if h_cost_time > 15:
                logger.warning('等待机票列表超10s,返回上个页面重新操作')
                d.app_stop(app_name)
                click_time = time.time()
                break
        if d(text="重新搜索").exists:
            logger.warning("没有符合条件的航班,重新搜索")
            time.sleep(1)
            d.press('back')
            time.sleep(1)
            fly_city_select()
            fly_list()
        else:
            h_appear_time = time.time()
            h_cost_time = h_appear_time - click_time
            logger.info('机票列表页耗时{}'.format(h_cost_time))
            e = EexeclData(file=target_file, sheet_name='列表页')
            e.write_cell(i + 1, 1, i)
            e.write_cell(i + 1, 2, h_cost_time)
            now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
            e.write_cell(i + 1, 3, now_time)
            logger.info('列表页表格数据更新成功')

        # now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        # get_adb_all_process(now_time)
        # file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        # with open(file_name, 'r', encoding='utf8') as file:
        #     out_pri = file.read()
        #     try:
        #         checkUpgrade_elapsed = re.findall('checkUpgrade","data":{"upgrade":null},"elapsed":(.*),"req_sn":', out_pri.strip())
        #         logger.info('checkUpgrade:{}'.format(checkUpgrade_elapsed[0]))
        #         e.write_cell(i + 1, 7, checkUpgrade_elapsed[0])
        #     except:
        #         pass

        #     try:

        #         couponsBanner_elapsed1 = re.findall('"unreceived_coupons":(.*),"req_sn":', out_pri.strip())
        #         couponsBanner_elapsed = re.findall(r'\d+\.\d+', str(couponsBanner_elapsed1))
        #         logger.info('couponsBanner_elapsed:{}'.format(couponsBanner_elapsed[0]))
        #         e.write_cell(i + 1, 8, couponsBanner_elapsed[0])
        #     except:
        #         pass

        #     try:
        #         brand_elapsed = re.findall('单床房"}]}],"elapsed":(.*)}', out_pri.strip())
        #         logger.info('brand_elapsed:{}'.format(brand_elapsed[0]))
        #         e.write_cell(i + 1, 9, brand_elapsed[0])
        #     except:
        #         pass

        #     try:
        #         createUserIntegrate1 = re.findall('createUserIntegrate(.*)}', out_pri.strip())
        #         createUserIntegrate = re.findall('"elapsed":(.*)', str(createUserIntegrate1[0]))
        #         logger.info('createUserIntegrate:{}'.format(createUserIntegrate[0]))
        #         e.write_cell(i + 1, 6, createUserIntegrate[0])
        #     except:
        #         pass

        #     try:
        #         hotel_list1 = re.findall('精选双早/延迟退房"]}},"elapsed":(.*)}', out_pri.strip())
        #         logger.info('brand_elapsed:{}'.format(hotel_list1[0]))
        #         e.write_cell(i + 1, 10, hotel_list1[0])
        #     except:
        #         pass

    except BaseException as e:
        logger.error('机票列表页出错{}'.format(e))
        send_msg(fly_webhook, '列表页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#28
0
        d.screenshot(t_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)


if __name__ == "__main__":
    ip = get_adb()[0]
    d = u2.connect(ip)
    start_time = time.strftime("%Y%m%d%H%M%S", time.localtime())
    file_name = start_time + "Gasoil.xlsx"
    source_file = os.getcwd() + '/Result/Result.xlsx'
    target_file = os.getcwd() + '/Result/' + file_name
    file_create_time = time.strftime("%Y%m%d_%H%M%S", time.localtime())
    t_screenshot_path = os.getcwd() + '\\screenshot\\Gasoil\\{}\\'.format(
        file_create_time)
    if not os.path.exists(t_screenshot_path):  # 如果目录不存在则创建
        os.makedirs(t_screenshot_path)
    copy_result(source_file, target_file)
    get_adb_main_process()
    i = 0
    while i < android_gasoil_test_times:
        i += 1
        logger.info('加油第{}次执行'.format(i))
        pre_test(category='加油')
        get_gasoil_list()
        get_gasoil_detail()
        gasoil_order()
        logger.info('加油第{}次结束'.format(i))
    send_msg(gasoil_webhook, '加油测试结束')
示例#29
0
def fly_detail():
    """
    机票详情
    """
    d.watcher.when('resourceId="android:id/aerr_restart"').click()
    try:
        time.sleep(1)
        a = randint(0, 3)
        for m in range(a):
            d.swipe(500, 1000, 500, 300)
            time.sleep(1)
        time.sleep(1)
        # 通过坐标点击页面第一个数据
        d.click(0.438, 0.315)
        logger.info('点击了飞机列表页')
        b_click_time = time.time()
        while not d(text="退改规则 | 行李托运规则").exists:
            # 接口超时处理
            # 当超时时间大于10s时返回上一层,重新操作
            b_appear_time = time.time()
            b_cost_time = b_appear_time - b_click_time
            if b_cost_time > 10:
                logger.warning('等待机票详情页超时')
                d.app_stop(app_name)
                b_click_time = time.time()

                break
        b_appear_time = time.time()
        b_cost_time = b_appear_time - b_click_time
        logger.info('机票详情页{}'.format(b_cost_time))
        e = EexeclData(file=target_file, sheet_name='详情页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, b_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        # e.write_cell(i + 1, 4, hotel_name)
        logger.info('详情页表格数据更新成功')
        time.sleep(1)
        d.swipe(500, 1000, 500, 300)

        # now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        # get_adb_all_process(now_time)
        # file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        # with open(file_name, 'r', encoding='utf8') as file:
        #     out_pri = file.read()

        #     try:
        #         hotel_detail_elapsed1 = re.findall('third_hotel_id":(.*)', out_pri.strip())
        #         hotel_detail_elapsed = re.findall('"elapsed":(.*)}', str(hotel_detail_elapsed1[0]).strip())
        #         logger.info('hotel_detail_elapsed:{}'.format(hotel_detail_elapsed[0]))
        #         e.write_cell(i + 1, 6, hotel_detail_elapsed[0])
        #     except:
        #         pass

    except BaseException as e:
        logger.error('详情页出错{}'.format(e))
        send_msg(fly_webhook, '详情页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)
示例#30
0
def fly_order():
    try:
        time.sleep(1)
        # 点击机票列表第一个数据
        d.click(0.862, 0.359)
        d_click_time = time.time()
        while not d(text="提交订单").exists:
            d_appear_time = time.time()
            d_cost_time = d_appear_time - d_click_time
            if d_cost_time > 10:
                logger.warning('等待机票订单页跳转超时')
                d.app_stop(app_name)
                d_click_time = time.time()
                break
        time.sleep(1)
        logger.info('提交订单页耗时{}'.format(d_cost_time))
        e = EexeclData(file=target_file, sheet_name='提交订单页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, d_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        logger.info('提交订单页表格数据更新成功')
        time.sleep(1)
        d(text="张海浩").click()
        time.sleep(1)
        d(text="提交订单").click()
        e_click_time = time.time()
        if d(resourceId="com.yiwosi.kbb:id/commitTV").exists:
            # 出现当前航班售价有变化,请刷新价格的提示时重新操作
            d(resourceId="com.yiwosi.kbb:id/commitTV").click()
        logger.info('点击了提交订单')
        while not d(resourceId="com.yiwosi.kbb:id/tViewWechat").exists:
            e_appear_time = time.time()
            e_cost_time = e_appear_time - e_click_time
            if e_cost_time > 30:
                logger.error('等待微信支付超10s')
                d.app_stop(app_name)
                e_click_time = time.time()
                break
        logger.info('跳转收银台页耗时{}'.format(e_cost_time))
        e = EexeclData(file=target_file, sheet_name='收银台页')
        e.write_cell(i + 1, 1, i)
        e.write_cell(i + 1, 2, e_cost_time)
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        e.write_cell(i + 1, 3, now_time)
        price = d(resourceId="com.yiwosi.kbb:id/text_price").get_text()
        e.write_cell(i + 1, 4, '价格{}'.format(price))
        logger.info('收银台页表格数据更新成功')
        time.sleep(1)
        d.press('back')
        d(text="取消订单").click()
        time.sleep(1)
        d(text="确认").click()
        time.sleep(1)
        d(text="确认").click()
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        d.press('back')
        time.sleep(1)
        # if not d(resourceId="com.yiwosi.kbb:id/text_hotel_name").exists:
        #     text_hotel_name = d(resourceId="com.yiwosi.kbb:id/text_hotel_name").get_text()
        #     logger.error('提交订单页异常,当前酒店名称{}'.format(text_hotel_name))
        #     send_msg(fly_webhook, '提交订单页异常')
        #     os.popen('adb -s {} logcat - c > {}adb.log'.format(ip, now_time))
        #     now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        #     d.screenshot(screenshot_path + '{}.jpg'.format(now_time))
        #     time.sleep(1)

        # now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        # get_adb_all_process(now_time)
        # file_name = '{}adb_{}.log'.format(os.getcwd() + '/Logs/', now_time)
        # with open(file_name, 'r', encoding='utf8') as file:
        #     out_pri = file.read()
        #     try:
        #         hotel_detail_elapsed1 = re.findall('third_hotel_id":(.*)', out_pri.strip())
        #         hotel_detail_elapsed = re.findall('"elapsed":(.*)', str(hotel_detail_elapsed1[0]).strip())
        #         logger.info('hotel_detail_elapsed:{}'.format(hotel_detail_elapsed[0]))
        #         e.write_cell(i + 1, 6, hotel_detail_elapsed[0])
        #     except:
        #         pass
        #     try:
        #         order_prepare = re.findall('night_num":1},"elapsed":(.*)}', out_pri.strip())
        #         logger.info('order_prepare{}'.format(order_prepare[0]))
        #         e.write_cell(i + 1, 6, order_prepare[0])
        #     except:
        #         pass
        #     try:
        #         points_index1 = re.findall('"equal_to_rmb":(.*)"req_sn"', out_pri.strip())
        #         points_index = re.findall('"elapsed":(.*),', points_index1[0])
        #         logger.info('points_index{}'.format(points_index[0]))
        #         e.write_cell(i + 1, 7, points_index[0])
        #     except:
        #         pass
        #     try:
        #         titles1 = re.findall('titles(.*)}', out_pri.strip())
        #         titles = re.findall('elapsed":(.*)', titles1[0])
        #         logger.info('titles{}'.format(titles[0]))
        #         e.write_cell(i + 1, 8, titles[0])
        #     except:
        #         pass

        #     try:
        #         getUserLastOrderById1 = re.findall('"message":"getUserLastOrderById",(.*)}', out_pri.strip())
        #         getUserLastOrderById = re.findall('elapsed":(.*)', getUserLastOrderById1[0])
        #         logger.info('getUserLastOrderById{}'.format(getUserLastOrderById[0]))
        #         e.write_cell(i + 1, 9, getUserLastOrderById[0])
        #     except:
        #         pass

        #     try:
        #         availableCoupons1 = re.findall('"use_platform"(.*)', out_pri.strip())
        #         availableCoupons = re.findall('"elapsed":(.*),"req_sn":', availableCoupons1[-1])
        #         logger.info('availableCoupons{}'.format(availableCoupons[0]))
        #         e.write_cell(i + 1, 9, getUserLastOrderById[0])
        #     except:
        #         pass

    except BaseException as e:
        logger.error('提交订单页出错{}'.format(e))
        send_msg(fly_webhook, '提交订单页出错')
        now_time = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
        d.screenshot(f_screenshot_path + '{}.jpg'.format(now_time))
        get_adb_all_process(now_time)
        time.sleep(1)
        d.app_stop(app_name)