def test_001_DokiDemo_两主播多次PK(self): logger.info('test_001_DokiDemo_创建加入房间') driver_A = self.driverlist[0] # 主播A driver_B = self.driverlist[1] # 主播B failcount = 3 # 用例中出错后重新执行的次数 runcount = 1 num = 1 caps = driver_A.desired_capabilities elementinfo, deviceid = pubfuc.getiteminfo(caps, 'QSDoki') while True: try: # 创建房间并返回房间号 roomid_A = dokidemo_behavior.create_doki_room(driver_A, elementinfo) roomid_B = dokidemo_behavior.create_doki_room(driver_B, elementinfo) # 进行PK while True: dokidemo_behavior.choose_room_pk(driver_A, roomid_B, elementinfo) dokidemo_behavior.choose_room_pk(driver_B, roomid_A, elementinfo) if num > 101 or runcount > failcount: break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{self.devicename[0]}.png') driver_A.save_screenshot(str(img_file)) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{self.devicename[1]}.png') driver_B.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver_A.close_app() driver_A.launch_app() driver_B.close_app() driver_B.launch_app()
def joingame(driver_A, driver_B, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver_A.desired_capabilities, "zuji") while True: try: if runcount > failcount: break while num < 501: logger.info(f'第{num}次开始比赛') create_team_game(driver_A, elementinfo) game_code = get_game_code(driver_A, elementinfo) join_game_by_code(driver_B, elementinfo, game_code) driver_A.find_element_by_xpath(elementinfo['开始比赛']['xpath']).click() sleep(2) driver_A.find_element_by_id("android:id/button1").click() sleep(10) # 结束比赛 driver_A.find_element_by_xpath(elementinfo['结束比赛']['xpath']).click() sleep(2) driver_A.find_element_by_id("android:id/button1").click() sleep(1) driver_A.find_element_by_id("android:id/button1").click() driver_B.find_element_by_id("android:id/button1").click() sleep(8) # 清理视频 clean_game_video(driver_A, elementinfo) clean_game_video(driver_B, elementinfo) num += 1 break except Exception as e: logger.info(f'第{num}次运行出错') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver_A.save_screenshot(str(img_file)) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}-B.png') driver_B.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver_A.close_app() driver_A.launch_app() driver_B.close_app() driver_B.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def create_team_test(driver, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities, "zuji") while True: try: if runcount > failcount: break while num < 51: logger.info(f'第{num}次创建球队') browse_team(driver,elementinfo) create_team(driver, elementinfo) sleep(2) driver.find_element_by_xpath(elementinfo['退出']['xpath']).click() sleep(2) num += 1 break except Exception as e: logger.info(f'第{num}次运行出错') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def joinandleaveroom(driver, roomid, devicename): fail_count = 1 # 用例中出错后重新执行的次数 run_count = 1 num = 1 device_driver_info = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(device_driver_info, 'QSA50WW') size = driver.get_window_size() while True: try: if run_count > fail_count: break while num < 101: if num % 10 == 0: logger.info(f"第{num}次{devicename}加入房间") joinroom(driver, elementinfo, roomid) driver.tap([[size['width'] / 2, size['height'] / 2]]) sleep(10) driver.find_element_by_id(elementinfo['离开房间']['id']).click() sleep(6) num += 1 break except Exception as e: logger.error(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path( __file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{run_count}次重跑') run_count += 1 # driver.close_app() # driver.launch_app() autopuloadlog(driver, device_driver_info, devicename, elementinfo)
def joinandleaveroom(driver, roomid, devicename): fail_count = 1 # 用例中出错后重新执行的次数 run_count = 1 num = 1 device_driver_info = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(device_driver_info) #size = driver.get_window_size() while True: try: driver.find_element_by_id("com.powerinfo.demo.a50_stb:id/start_btn").click() sleep(20) driver.find_element_by_id("com.powerinfo.demo.a50_stb:id/img_close").click() sleep(20) except Exception as e: logger.error(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not True: return logger.info(f'第{run_count}次重跑') run_count += 1 driver.close_app() driver.launch_app()
def startback(driver, devicename): failcount = 1 # 用例中出错后重新执行的次数 runcount = 1 num = 1 while True: try: if runcount > failcount: break devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo, 'bootstrap') while num < 101: logger.info(f'{num}次{devicename}创建房间') print(num) driver.find_element_by_id(elementinfo['设置']['id']).click() sleep(2) driver.find_element_by_id('iLive QS Huajiao').click() sleep(3) driver.find_element_by_id(elementinfo['创建房间']['id']).click() sleep(2) driver.find_element_by_id(elementinfo['离开房间']['id']).click() sleep(3) num += 1 break except Exception as e: runcount += 1 logger.info(f'第{num}次运行出错,设备是:{devicename}') img_file = pubfuc.get_real_dir_path( __file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True)
def test_002_DokiDemo_多次加入离开房间(self): logger.info('test_002_DokiDemo_多次加入离开房间') driver_A = self.driverlist[0] # 主播A failcount = 3 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver_A.desired_capabilities, 'QSDoki') while True: try: # 进行PK print(f'第{num}次加入房间') dokidemo_behavior.join_doki_room(driver_A, elementinfo, self.roomid) # sleep(5) # driver_A.background_app(5) # sleep(5) driver_A.find_element_by_id(elementinfo['离开房间']['id']).click() sleep(3) num += 1 if num > 501 or runcount > failcount: break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{self.devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{self.devicename[0]}.png') driver_A.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver_A.close_app() driver_A.launch_app()
def edit_per_info_test(driver, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities, "zuji") while True: try: if runcount > failcount: break while num < 100: logger.info(f'第{num}、{num+1}次修改个人信息') sleep(3) edit_per_info(driver, elementinfo) sleep(2) back_android(driver) sleep(2) num += 2 break except Exception as e: logger.info(f'第{num}次运行出错') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def allot_remove_manager_test(driver, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities, "zuji") while True: try: if runcount > failcount: break logger.info(f'第{num}次添加管理员') sleep(3) team_name = "t1" browse_team(driver, elementinfo) select_team(driver, team_name) allot_manager(driver, elementinfo) sleep(2) logger.info(f'第{num}次取消管理员') remove_manager(driver, elementinfo) sleep(2) back_android(driver) sleep(2) num + 1 except Exception as e: logger.info(f'第{num}次运行出错') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def startroom(driver, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 success_flag = True num = 1 while success_flag: try: if runcount > failcount: success_flag = False devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo) chooseroomtype(driver, elementinfo) while num < 1001: logger.info(f'{num}次{devicename}创建房间') startnewroom(driver, elementinfo) sleep(5) driver.find_element_by_id(elementinfo['离开房间']['id']).click() sleep(2) while driver.find_element_by_id(elementinfo['创建房间']['id']) is None: sleep(2) num += 1 except Exception as e: runcount += 1 logger.info(f'第{num}次运行出错,设备是:{devicename}') img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return driver.close_app() driver.launch_app()
def playgamevideo(driver, devicename): failcount = 3 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities, "zuji") while True: try: if runcount > failcount: break driver.find_element_by_xpath("//android.widget.TextView[@text='lidw的主队']").click() sleep(2) driver.find_element_by_xpath(elementinfo['视频']['xpath']).click() sleep(3) phone_size = driver.get_window_size() size = driver.find_element_by_xpath(elementinfo['视频播放器']['xpath']).size print(phone_size, size) while num < 501: logger.info(f'第{num}次播放视频') driver.tap([[300, 400]]) driver.swipe(start_x=size['width'] * 0.2, start_y=size['height'] * 0.7, end_x=size['width'] * 0.5, end_y=size['height'] * 0.7,duration=3000) sleep(10) driver.tap([[300, 400]]) driver.swipe(start_x=size['width'] * 0.2, start_y=size['height'] * 0.7, end_x=size['width'] * 0.5, end_y=size['height'] * 0.7, duration=3000) sleep(10) driver.tap([[300, 400]]) driver.swipe(start_x=size['width'] * 0.2, start_y=size['height'] * 0.7, end_x=size['width'] * 0.5, end_y=size['height'] * 0.7, duration=3000) sleep(10) driver.tap([[300, 400]]) sleep(0.5) driver.find_element_by_xpath(elementinfo['视频全屏']['xpath']).click() sleep(10) driver.tap([[300, 400]]) sleep(0.5) driver.find_element_by_xpath(elementinfo['视频切换多视频']['xpath']).click() sleep(2) driver.back() num += 1 break except Exception as e: logger.info(f'第{num}次运行出错') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def test_001参与者多次加入离开房间(self): logger.info('test_001参与者多次加入离开房间') fail_count = 5 # 用例中出错后重新执行的次数 run_count = 1 success_flag = True num = 1 procs = [] driver = self.driverlist[0] driver.find_element_by_id( "net.imusic.android.dokidoki:id/img_me").click() #me界面 sleep(2) driver.find_element_by_id( "net.imusic.android.dokidoki:id/ll_follow_container").click( ) #关注界面 sleep(10) driver.tap([[600, 150]]) sleep(10) while success_flag: try: if run_count > fail_count: break while num < 1001: if num % 10 == 0: logger.info(f"第{num}次{self.device_name}加入房间") driver.find_element_by_id( "net.imusic.android.dokidoki:id/btn_live").click() sleep(15) driver.tap([[1000, 150]]) sleep(5) num += 1 break except Exception as e: logger.error(f'第{num}次运行出错,设备是:{self.device_name}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path( __file__, f'../testresult/{pubfuc.getlocaltime()}-{self.device_name}.png' ) driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return logger.info(f'第{run_count}次重跑') run_count += 1 driver.close_app() driver.launch_app() driver.find_element_by_id( "net.imusic.android.dokidoki:id/img_me").click() #me界面 sleep(2) driver.find_element_by_id( "net.imusic.android.dokidoki:id/ll_follow_container" ).click() #关注界面 sleep(10) driver.tap([[600, 150]]) sleep(10)
def getlog(driver): elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities) if 'desired' in driver.desired_capabilities: filepath = pubfuc.get_real_dir_path(__file__, '../testresult') + f'/{deviceid}_powerinfo/' print(filepath) # filepath = f'/Users/liminglei/Desktop/log/{deviceid}/' if Path(filepath).exists(): subprocess.Popen(f'rm {filepath}', shell=True) subprocess.Popen(f'mkdir {filepath}', shell=True) subprocess.Popen(f'adb -s {deviceid} pull /sdcard/powerinfo {filepath}', shell=True)
def start_match(driver, devicename): # 260, 320, 380 # 再来一局 # //XCUIElementTypeButton[@name="再来一局"] failcount = 3 # 用例中出错后重新执行的次数 runcount = 1 num = 1 devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo, 'zhifou') while True: try: if runcount > failcount: break driver.find_element_by_id(elementinfo['参与挑战']['id']).click() sleep(3) size = driver.get_window_size() x = size['width'] / 2 y = size['height'] * 0.8 end_y = size['height'] * 0.2 driver.swipe(x, y, x, end_y) driver.find_element_by_xpath(elementinfo['宋词']['xpath']).click() sleep(25) driver.find_element_by_id(elementinfo['直接参数']['id']).click() sleep(20) driver.keyevent(4) sleep(20) if elementinfo['退出']['id'] not in driver.page_source: raise RuntimeError('加入房间失败') size = driver.get_window_size() # for i in range(100): # driver.tap([[size['width'] / 2, 260]]) # sleep(2) #sleep(2) driver.find_element_by_id(elementinfo['退出']['id']).click() break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path( __file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime())
def startlivemeroom(driver, devicename): devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo, 'liveme') driver.find_element_by_xpath(elementinfo['开启直播']['xpath']).click() sleep(3) driver.find_element_by_xpath(elementinfo['多人直播']['xpath']).click() sleep(2) driver.find_element_by_xpath(elementinfo['开始直播']['xpath']).click() sleep(5) xml_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.xml') with open(xml_file, 'a') as f: f.write(driver.page_source)
def backapp(driver, roomid, devicename): failcount = 5 # 用例中出错后重新执行的次数 runcount = 1 success_flag = True num = 1 device_driver_info = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(device_driver_info) while success_flag: try: if runcount > failcount: break isios = 'desired' not in device_driver_info if 'RoomI' not in driver.page_source: chooseroomtype(driver, elementinfo) # 选择多人群聊 # startnewroom(driver, elementinfo) # 加入房间 joinroom(driver, elementinfo, roomid) sleep(10) bundleid = size = None if isios: bundleid = driver.capabilities['bundleId'] size = driver.get_window_size() while num < 1001: if num % 10 == 0: logger.info(f"第{num}次{devicename}切后台") if isios: backiosapp(driver, size, bundleid, time=5) else: driver.background_app(5) sleep(5) # 切后台回来后,查看离开房间按钮是否可用,确定正确切回了前台 driver.find_element_by_id(elementinfo['离开房间']['id']).get_attribute('enabled') # logger.info(f"离开房间按钮是否可用:{back_is_enable}") num += 1 driver.find_element_by_id(elementinfo['离开房间']['id']).click() break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() autopuloadlog(driver, device_driver_info, devicename, elementinfo)
def login(driver, devicename): failcount = 1 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities) while True: try: if runcount > failcount: break driver.find_element_by_xpath(elementinfo['我的']['xpath']).click() sleep(1) driver.find_element_by_xpath("//android.widget.TextView[@text='请登录']").click() while num < 11: logger.info(f'第{num}次登录') sleep(2) driver.find_element_by_xpath("//android.widget.EditText[@text='请输入手机号']").send_keys('18610122196') driver.find_element_by_xpath("//android.widget.EditText[@text='请输入密码']").send_keys('sjdd1234') driver.tap([[200, 200]]) # 点击空白处返回按钮 sleep(1) driver.find_element_by_xpath("//android.widget.TextView[@text='登录']").click() # s1 = driver.find_element_by_xpath("//android.widget.TextView[@text='微信']").size # s2 = driver.find_element_by_xpath("//android.widget.TextView[@text='微信']").location # driver.tap([[s2['x']+50, s2['y']-60]]) # driver.find_element_by_xpath("//android.widget.ViewGroup/android.widget.ViewGroup").click() sleep(3) driver.find_element_by_xpath("//android.widget.TextView[@text='登录成功']") driver.find_element_by_xpath("//android.widget.Button[@text='OK']").click() sleep(2) driver.tap([[200, 200]]) driver.find_element_by_xpath("//android.widget.TextView[@text='我的']").click() sleep(1) driver.find_element_by_xpath("//android.widget.TextView[@text='设置']").click() sleep(1) driver.find_element_by_xpath("//android.widget.TextView[@text='退出登录']").click() sleep(1) driver.find_element_by_xpath("//android.widget.Button[@text='确定']").click() num += 1 break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 logger.info(pubfuc.getlocaltime())
def changerole(driver, roomid, devicename): failcount = 5 # 用例中出错后重新执行的次数 runcount = 1 success_flag = True num = 1 devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo) while True: try: if runcount > failcount: break if 'RoomI' not in driver.page_source: chooseroomtype(driver, elementinfo) # 选择多人群聊 joinroom(driver, elementinfo, roomid) # 加入房间 sleep(10) if elementinfo['离开房间']['id'] not in driver.page_source: raise RuntimeError('加入房间失败') while num < 1001: if num % 10 == 0: logger.info(f"第{num}次{devicename}切换角色") driver.find_element_by_id(elementinfo['切换角色']['id']).click() sleep(6) num += 1 driver.find_element_by_id(elementinfo['离开房间']['id']).click() break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') err_time = pubfuc.getlocaltime() # xml_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.xml') # with open(xml_file, 'a') as f: # f.write(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() autopuloadlog(driver, devicedriverinfo, devicename, elementinfo)
def audiojoinroom(driver,devicename,roomid): fail_count = 5 # 用例中出错后重新执行的次数 run_count = 1 success_flag = True num = 1 device_driver_info = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(device_driver_info) print(roomid) while success_flag: try: if run_count > fail_count: break while num < 501: if 'RoomI' not in driver.page_source: driver.find_element_by_xpath("//android.widget.TextView[@text='游戏连麦']").click() sleep(10) #print(driver.page_source) driver.find_element_by_xpath("//android.widget.TextView[@text='纯音频群聊']").click() sleep(5) if num % 10 == 0: logger.info(f"第{num}次{devicename}加入房间") joinroom(driver, elementinfo, roomid, False) sleep(5) driver.find_element_by_id(elementinfo['离开房间']['id']).click() sleep(6) num += 1 break except Exception as e: logger.error(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return logger.info(f'第{run_count}次重跑') run_count += 1 driver.close_app() driver.launch_app() autopuloadlog(driver, device_driver_info, devicename, elementinfo)
def login_logout_test(driver, devicename): failcount = 3 # 用例中出错后重新执行的次数 runcount = 1 num = 1 elementinfo, deviceid = pubfuc.getiteminfo(driver.desired_capabilities, 'zuji') while True: try: if runcount > failcount: break sleep(3) driver.find_element_by_xpath(elementinfo['我的']['xpath']).click() sleep(1) if '请登录' in driver.page_source: driver.find_element_by_xpath("//android.widget.TextView[@text='请登录']").click() else: logout(driver) while num < 501: logger.info(f'第{num}次登录') sleep(2) loginbyphonenumber(driver) sleep(2) driver.tap([[200, 200]]) logout(driver) num += 1 sleep(2) # 为保证接下来用例正常运行,测试完登录功能后登录账户 loginbyphonenumber(driver) break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() logger.info(pubfuc.getlocaltime()) sleep(20)
def lockscreen(driver, roomid, devicename): failcount = 5 # 用例中出错后重新执行的次数 runcount = 1 num = 1 device_driver_info = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(device_driver_info) while True: try: if runcount > failcount: break if 'RoomI' not in driver.page_source: chooseroomtype(driver, elementinfo) # 选择多人群聊 # startnewroom(driver, elementinfo) # 加入房间 joinroom(driver, elementinfo, roomid) sleep(10) while num < 1001: if num % 10 == 0: logger.info(f"第{num}次{devicename}锁屏") driver.lock(5) sleep(3) # 锁屏回来后,查看离开房间按钮是否可用,确定正确切回了前台 driver.find_element_by_id(elementinfo['离开房间']['id']).get_attribute('enabled') # logger.info(f"离开房间按钮是否可用:{back_is_enable}") num += 1 driver.find_element_by_id(elementinfo['离开房间']['id']).click() break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') # print(driver.page_source) img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{pubfuc.getlocaltime()}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() autopuloadlog(driver, device_driver_info, devicename, elementinfo)
def switchwifi(driver, roomid, devicename): failcount = 10 # 用例中出错后重新执行的次数 runcount = 1 num = 1 devicedriverinfo = driver.desired_capabilities # 获取正在运行的设备的参数设置 elementinfo, deviceid = pubfuc.getiteminfo(devicedriverinfo) while True: try: if runcount > failcount: break if 'RoomI' not in driver.page_source: chooseroomtype(driver, elementinfo) # 选择多人群聊 joinroom(driver, elementinfo, roomid) # 加入房间 sleep(10) if elementinfo['离开房间']['id'] not in driver.page_source: raise RuntimeError('加入房间失败') while num < 1001: if num % 10 == 0: logger.info(f"第{num}次{devicename}断网10s左右恢复") switch_wifi(driver, 6) driver.find_element_by_id(elementinfo['离开房间']['id']).get_attribute('enabled') num += 1 driver.find_element_by_id(elementinfo['离开房间']['id']).click() break except Exception as e: logger.info(f'第{num}次运行出错,设备是:{devicename}') err_time = pubfuc.getlocaltime() img_file = pubfuc.get_real_dir_path(__file__, f'../testresult/{err_time}-{devicename}.png') driver.save_screenshot(str(img_file)) sleep(3) logger.error(e.args[0], exc_info=True) logger.info(f'第{runcount}次重跑') runcount += 1 driver.close_app() driver.launch_app() autopuloadlog(driver, devicedriverinfo, devicename, elementinfo)
tests = [MainTest("test_001参与者多次加入离开房间")] ======= tests = [StbTest("test_001参与者多次加入离开房间")] >>>>>>> origin/master # tests = [testcase.leaktest.IRoomLeakTest('test_04只收流')] #tests = [QSDokiDemoTest('test_002_DokiDemo_多次加入离开房间')] # test_001_A50参与者多次加入离开房间 # tests = [testcase.P31link191test.P31linkTest('test_001_p31link参与者多次加入离开房间')] # tests = [MPdemotest("test_001_mpdemo参与者多次加入离开房间")] # tests = [TongZhuoHaiWaiTest('test_001同桌多次加入离开房间')] # tests = [ZhifouTest('test_001参与者加入离开房间')] # tests = [ZhiMianHaoYouTest('test_001_直面正确添加好友')] suite.addTests(tests) logger = pubfunc.setcustomlogger('autolog') # 可以添加第二个参数False来控制打印日志到屏幕上test_001参与者多次加入离开房间 runner = unittest.TextTestRunner(verbosity=2) runner.run(suite) result_dir = pubfunc.get_real_dir_path(__file__, '../testresult/') result_file = os.path.join(result_dir, 'autolog.log') appium_log = [] img_list = [] for imgfile in os.listdir(result_dir): if os.path.splitext(imgfile)[1] == '.png': img_list.append(os.path.join(result_dir, imgfile)) elif 'appiumlog' in imgfile: appium_log.append(os.path.join(result_dir, imgfile)) # pubfunc.send_mail(mail_recievers, result_file, img_list, appium_log)
def test_002参与者多次PK(self): logger.info('test_002参与者多次PK') fail_count = 10 # 用例中出错后重新执行的次数 run_count = 1 success_flag = True num = 1 driverA = self.driverlist[0] driverB = self.driverlist[1] sleep(10) driverA.implicitly_wait(4) while success_flag: try: if run_count > fail_count: break dokidokibehavior.create_doki_room(driverA) dokidokibehavior.create_doki_room(driverB) sleep(10) while num < 1001: logger.info(f"第{num}次进行pk") driverA.find_element_by_id( "net.imusic.android.dokidoki:id/btn_interaction" ).click() sleep(4) driverA.find_element_by_id( "net.imusic.android.dokidoki:id/ll_pk").click() sleep(4) driverA.find_element_by_id( "net.imusic.android.dokidoki:id/rl_friends").click() sleep(4) driverA.find_element_by_id( "net.imusic.android.dokidoki:id/tv_invite").click() sleep(5) driverB.find_element_by_id( "net.imusic.android.dokidoki:id/tv_accept").click() sleep(10) driverA.tap([[550, 1050]], duration=100) driverB.tap([[550, 1050]]) sleep(4) driverA.tap([[940, 940]]) driverB.tap([[940, 940]]) sleep(10) driverB.find_element_by_id( "net.imusic.android.dokidoki:id/tv_end_pk").click( ) #结束PK sleep(2) driverB.find_element_by_id( "net.imusic.android.dokidoki:id/tv_right").click() sleep(10) driverA.tap([[550, 1050]], duration=100) driverB.tap([[550, 1050]]) sleep(4) driverA.tap([[940, 940]]) driverB.tap([[940, 940]]) sleep(10) num += 1 break except Exception as e: logger.error(f'第{num}次运行出错,设备是:{self.device_name}') img_file_A = pubfuc.get_real_dir_path( __file__, f'../testresult/{pubfuc.getlocaltime()}-{self.device_name[0]}.png' ) driverA.save_screenshot(str(img_file_A)) img_file_B = pubfuc.get_real_dir_path( __file__, f'../testresult/{pubfuc.getlocaltime()}-{self.device_name[1]}.png' ) driverB.save_screenshot(str(img_file_B)) sleep(3) logger.error(e.args[0], exc_info=True) if not success_flag: return logger.info(f'第{run_count}次重跑') run_count += 1 driverA.close_app() driverA.launch_app() driverB.close_app() driverB.launch_app()