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 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 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 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 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 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 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 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 uploadlog(driver, elementinfo): if not driver.find_element_by_xpath(elementinfo['uploadlog']['xpath']).is_displayed(): driver.execute_script("mobile: dragFromToForDuration", {'fromX': 100, 'fromY': 350, 'toX': 100, 'toY': 50, 'duration': 1}) driver.find_element_by_xpath(elementinfo['uploadlog']['id']).click() sleep(10) # driver.find_element_by_xpath(elementinfo['CN']['xpath']).click() uoloadtime = pubfuc.getlocaltime() sleep(1) iswaite = driver.find_element_by_xpath(elementinfo['OK']['xpath']) is None while iswaite: sleep(3) iswaite = driver.find_element_by_xpath(elementinfo['OK']['xpath']) is None if 'Upload Success' not in driver.page_source: driver.find_element_by_xpath(elementinfo['OK']['xpath']).click() uploadlog(driver, elementinfo) logger.info(f"上传是否成功: {not iswaite}") driver.find_element_by_xpath(elementinfo['OK']['xpath']).click() logger.info(f"upload log time is : {uoloadtime}") return uoloadtime
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)