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)
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 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 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)
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)
def write_cell(self, row, column, update_data): """ 单元格写入数据 :return: """ try: self.open() self.sheet.cell(row, column).value = update_data self.wb.save(self.file) self.wb.close() except BaseException as e: logger.error('表格内容填写失败-{}'.format(e))
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)
def copy_result(source_file, target_file): """ 复制文件方法 :param source_file: 源文件 :param target_file: 目标文件 :return: """ # assert not os.path.isabs(source_file) try: shutil.copy(source_file, target_file) except IOError as e: logger.error("Unable to copy file. %s" % e) except: logger.error("Unexpected error:", sys.exc_info())
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)