class PerTest_QIPAIHALL_Backpack(TestCase): ''' 物品箱操作 ''' owner = "JessicZeng" status = EnumStatus.Design priority = EnumPriority.High timeout = 5 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.backpack_Page = Backpack_Page() def run_test(self): ''' 测试步骤 1、大厅点击物品箱入口 2、点击兑换记录 3、点击大厅同步标志,退出物品箱 ''' self.hall_page.wait_element("同步标志") #点击大厅物品箱入口 self.start_step("点击大厅物品箱入口") self.common.sendTagBroadcast(EnumSceneName.Backpack, EnumSceneType.Start) try: #点击物品箱入口 self.hall_page.get_element("物品箱", 0).click() time.sleep(2) self.backpack_Page.wait_element("同步标志") self.common.taskScreenShot("openBackpackPop.jpg") #查看物品箱兑换记录 self.start_step("查看物品箱兑换记录") self.backpack_Page.get_element("兑换记录按钮", 0).click() self.backpack_Page.wait_element("兑换记录框同步标志") self.common.taskScreenShot("openBackpackPop.jpg") self.backpack_Page.get_element("兑换记录框关闭", 0).click() except: print "操作物品箱失败" finally: self.common.checkPopVisible(self.backpack_Page) self.hall_page.wait_element("同步标志") time.sleep(5) self.common.sendTagBroadcast(EnumSceneName.Backpack, EnumSceneType.Stop)
class kick_base(TestCase): ''' 房间内踢人脚本基类 ''' owner = "JessicZeng" status = EnumStatus.Design priority = EnumPriority.High timeout = 30 global mid global kickCard_cnt #各游戏对应id 203:斗地主,20:干瞪眼,7:血流成河, 2002:双扣 23:拖三批(七人焖鸡、斗鸡) # 2601:葫芦岛麻将 2603:K十五 25:升级 3:斗牛 #20:预发布环境有不能正常玩牌的子游戏,不进行测试 #23、3:每局游戏时间太短不足以操作玩家头像 global global_black_list global_black_list = ["game20", "game23", "game3"] # 为True,本地调试时不执行关闭活动弹框逻辑 global isDebug isDebug = False def pre_test(self): self.start_step("初始化环境") self.common = Common() self.hall_page = Hall_Page() self.game_page = Game_Page() self.yuepai_page = Yuepai_Page() self.backpack_page = Backpack_Page() self.start_step("初始化driver") global mid mid = self.common.get_config_value("casecfg", "mid") self.luadriver = self.common.setupdriver() if isDebug != True: self.common.closeactivity(self.luadriver) else: time.sleep(10) def wait_login_suc(self): '''等待大厅登录成功标志加载完成''' end_time = time.time() + 120 while True: try: if self.hall_page.element_is_exist("登录成功标志", 1): self.common.platformLog("大厅登录成功") return True elif self.hall_page.element_is_exist("重连游戏", 1): self.hall_page.get_element("重连游戏").click() time.sleep(2) elif self.hall_page.element_is_exist("重新登陆", 1): self.hall_page.get_element("重新登陆").click() time.sleep(2) except: self.common.platformLog("等待大厅登录成功过程中,获取元素失败") return False if time.time() > end_time: self.common.platformLog("大厅未在指定时间内登录成功") return False def changeServer(self): ''' 子游戏返回列表后通过切换环境,来确保每次都重新登录 避免某些接口设置不生效 默认从正式环境切换到当前测试环境 :return: ''' try: self.hall_page.wait_element("正式服").click() self.common.closeactivity(self.luadriver) except: print "切换到正式服失败" self.common.switchserver() self.common.closeactivity(self.luadriver) def set_PlayerData(self, VIPType, kickCnt): ''' 设置玩家VIP及踢人卡数量,由于有界面操作 只能放在进入大厅成功后调用 :param VIPCnt: 是否有VIP :param kickCnt: 踢人卡张数 踢人卡id为36 None:则是不设置踢人卡数量 :return: ''' self.start_step("设置玩家数据") if PHPInterface.set_vip(mid, VIPType) == 0: self.common.platformLog("接口设置VIP信息失败") return False else: self.common.platformLog("设置VIP状态成功") #目前道具接口有问题,设置为0 会返回失败 当设置数量为0时,强制返回True status = False if PHPInterface.add_props(mid, 36, kickCnt) == 0 and kickCnt != 0: self.common.platformLog("设置踢人卡数量失败") status = False else: global kickCard_cnt kickCard_cnt = kickCnt status = True self.common.platformLog("测试开始前设置被测玩家初始数据", mid, VIPType, kickCnt, "设置VIP和踢人卡结果:", status) return status def check_player_data(self, VIPType, kickCnt): ''' 检测当前用户数据是否与设置一致,若不一致则切换测试环境来刷新用户数据 :param VIPType: :param kickCnt: :return: ''' need_change = False if (VIPType in [4, 5, 6] and self.hall_page.element_is_exist("vip标识", 1)): #有VIP标识 pass elif (VIPType == -1 and self.hall_page.element_not_exist("vip标识", 1)): #无VIP标识 pass else: need_change = True if need_change == False and kickCnt != self.get_KickCnt(): need_change = True if need_change == True: self.changeServer() if self.wait_login_suc(): self.common.platformLog("切换测试环境后,大厅登录成功") return True else: self.common.platformLog("切换测试环境后,大厅登录失败") return False else: self.common.platformLog("玩家VIP和踢人卡数量正确,不需切换环境") return True def wait_in_game(self): ''' 等待牌局开始,超过60s 则返回失败,停止后续测试操作 :param gamePage 避免重复new :return: True:牌局中 False:未在牌局中 ''' gamePage = Game_Page() cnt = 0 isIn = False while cnt < 30: if self.el_not_exist(gamePage, "房间标志"): isIn = False break if self.el_not_exist(gamePage, "换桌") and self.el_not_exist( gamePage, "准备"): isIn = True print "牌局已经开始" break cnt += 1 time.sleep(1) self.common.platformLog("牌局是否进行中:", isIn) return isIn def el_not_exist(self, page, el_name): ''' 判断元素不存在 :param element: ''' try: if (page.get_element(el_name) == None): return True else: return False except: return True def set_Robot(self, gameid, basechiptype=0, playmode=1, roomlevel=1, robotflag=0): #七人焖鸡默认的七人玩法,对应的playmod是3 其余游戏均为0 if gameid == '23': playmode = 3 return PHPInterface.set_robot_flag(gameid, basechiptype, playmode, roomlevel, robotflag) def get_KickCnt(self): ''' :return: 踢人卡张数 默认为None 表示获取踢人卡失败 ''' self.start_step("获取玩家物品箱踢人卡数量") self.common.platformLog("开始获取踢人卡*************") kick_cnt = 0 try: self.hall_page.get_element("物品箱").click() self.backpack_page.wait_element("物品箱同步标志") item_namesEl = self.backpack_page.get_elements("item名称") item_cntsEl = self.backpack_page.get_elements("item数量") # 获取两个元素列表成功 index = 0 for el in item_namesEl: if el.get_attribute('text') == "踢人卡": kick_cnt = int(item_cntsEl[index].get_attribute('text')) break index += 1 except: self.common.platformLog("打开物品箱获取踢人卡数量失败") finally: self.common.checkPopVisible(self.luadriver, self.backpack_page) self.hall_page.wait_element("同步标志") self.common.platformLog("从物品箱获取到的踢人卡数量", kick_cnt) return kick_cnt def loop_GameList(self, testFunc, isNext, VIPType, kickCnt, def_black_list=None): game_list = self.game_page.get_game_list() for gameElement in game_list: try: gameId = gameElement.get_attribute("name") self.common.platformLog("当前测试子游戏:", gameId) #判断该子游戏是否是可测游戏 if def_black_list != None: black_list = def_black_list else: black_list = global_black_list if black_list != None and gameId in black_list: self.common.platformLog(gameId, "该子游戏不符合用例前置条件,不进行测试") continue #若从子游戏返回大厅后登录大厅失败,结束测试 if self.wait_login_suc(): self.common.platformLog("登录大厅成功") else: self.assert_equal("登录大厅失败,停止后续所有测试步骤", True, False) self.hall_page.screenshot("登录大厅失败.png") break #根据条件设置玩家数据 global kickCard_cnt if self.set_PlayerData(VIPType, kickCnt) == False: self.assert_equal(gameId + "设置玩家VIP信息失败", True, False) continue else: time.sleep(2) self.hall_page.wait_element("可点击标志", 2).click() time.sleep(1) if self.check_player_data(VIPType, kickCnt) == False: self.assert_equal(gameId + "玩家数据不匹配切换环境后,登录失败,退出该用例测试", True, False) break if isNext and self.hall_page.element_is_exist("右三角", 3): self.hall_page.get_element("右三角").click() time.sleep(1) self.common.platformLog("点击大厅子游戏入口") time.sleep(1) gameElement.click() if (self.game_page.game_is_download() == False): self.log_info("下载游戏ID:%s 失败" % gameId) self.game_page.screenshot(gameId + "_下载子游戏失败.png") try: self.hall_page.wait_element("关闭对话框").click() except: self.common.platformLog("关闭弹框") continue self.start_step("开启机器人") if self.set_Robot( re.search('\d+', gameId).group(), 0, 0, 12, 1): self.common.platformLog("开始机器人成功") else: self.assert_equal(gameId + "开启机器人失败", True, False) return 0 try: self.start_step("点击入口进入房间") if self.game_page.element_is_exist("新房间类型", 2): gameType_Els = self.game_page.get_elements("新房间类型") gameType_Els[0].click() elif self.game_page.element_not_exist("广播", 2): gameType_tabEls = self.game_page.game_play_way() gameType_tabEls[0][1].click() # 确保进入的是普通场 #点击房间场次,进入房间 if self.game_page.element_is_exist("新初级场场次", 2): self.game_page.get_element("新初级场场次").click() elif self.game_page.element_is_exist("房间场次", 2): self.game_page.get_element("房间场次").click() except: self.assert_equal(gameId + "大厅进入房间失败", True, False) self.game_page.screenshot(game_id + "_大厅进入房间失败" + ".png") try: self.start_step("开始具体子游戏操作:" + gameId) testFunc(gameId) except: self.game_page.screenshot(game_id + "_房间内操作子游戏失败" + ".png") self.assert_equal(gameId + "房间内操作子游戏失败", True, False) except: self.assert_equal(gameId + "子游戏循环操作失败", True, False) finally: while True: if self.hall_page.element_is_exist("排行榜", 5): break self.luadriver.back() def run_test_base(self, stepFunc, VIPType, kickCnt, def_black_list=None): ''' :param VIPType: VIP类型 :param kickCnt: 踢人卡数量 :param stepFunc: 具体测试步骤方法 :param def_black_list: 自定义子游戏黑名单 :return: ''' self.start_step("等待页面加载完成") # 若从子游戏返回大厅后登录大厅失败,结束测试 if self.wait_login_suc(): self.common.platformLog("run_test_base登录大厅成功") else: self.assert_equal("run_test_base登录大厅失败,停止后续所有测试步骤", True, False) self.hall_page.screenshot("登录大厅失败.png") return 0 time.sleep(8) self.loop_GameList(stepFunc, False, VIPType, kickCnt, def_black_list) try: self.hall_page.wait_element("右三角").click() time.sleep(8) self.loop_GameList(stepFunc, True, VIPType, kickCnt, def_black_list) except: self.common.platformLog("没有右三角按钮") def post_test(self): # ''' # 测试用例执行完成后,清理测试环境 # 设置VIP为过期状态,踢人卡数量为0 # ''' self.start_step("清理测试环境") self.set_PlayerData(-1, 0) self.common.set_coin(mid, '10000') self.common.closedriver()
class C31042_DFQP_Backpack_share(TestCase): ''' 安装了微信分享兑换记录 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 20 def pre_test(self): self.start_step("初始化环境") self.common = Common() global user_info user_info = self.common.get_user() print user_info self.message_page = Message_Page() self.hall_page = Hall_Page() self.personinfo_page = Personinfo_Page() self.backpack_page = Backpack_Page() self.start_step("接口交互道具私信") # PHPInterface.set_env(PHPInterface.PRE_REPUBLISH_ENV) return1 = PHPInterface.send_message(int(user_info['mid']), "接口交互道具私信","接口交互道具私信",200005,1,0) self.start_step("初始化driver") self.luadriver = self.common.setupdriver() self.start_step("关闭活动页面") # 每个用例都需要关闭活动,并切换到测试服 self.common.closeactivity_switchserver(self.luadriver) self.start_step("判断是否登陆") if not self.common.isloginuser(self.luadriver): self.common.loginuser(user_info['user'], user_info['password']) self.common.closeActivityBtn() else: if self.personinfo_page.wait_element("账号ID").get_attribute('text') != user_info['cid']: self.common.loginuser(user_info['user'], user_info['password']) self.common.closeActivityBtn() try: self.personinfo_page.wait_element("关闭").click() except: print "已关闭窗口" def run_test(self): ''' 测试用例 ''' self.start_step("等待页面加载完成") self.hall_page.wait_element("同步标志") time.sleep(4) self.start_step("进入消息页面") self.hall_page.wait_element("消息").click() time.sleep(2) self.start_step("查看消息") try: try: element = self.message_page.get_elements("小琪妹") element[1].click() except: self.message_page.wait_element("小琪妹").click() time.sleep(3) self.message_page.screenshot('getcalls1.png') self.message_page.wait_element("立即领取").click() time.sleep(3) self.message_page.screenshot('getcalls2.png') self.message_page.wait_element("知道了").click() time.sleep(2) self.message_page.wait_element('已领取').get_attribute('text') == "已领取" except: print ("没有消息") time.sleep(3) self.hall_page.wait_element("头像").click() time.sleep(3) self.hall_page.wait_element("头像").click() self.hall_page.wait_element("同步标志") self.start_step("进入物品箱页面") time.sleep(2) self.hall_page.wait_element("物品箱").click() time.sleep(4) self.hall_page.screenshot('Backpack_Enterpack2.png') self.backpack_page.wait_element("物品名称").click() time.sleep(2) self.backpack_page.wait_element("使用").click() time.sleep(2) self.backpack_page.wait_element("手机号码").send_keys(user_info['user']) time.sleep(2) self.backpack_page.wait_element("确认手机号码").send_keys(user_info['user']) time.sleep(2) self.backpack_page.wait_element("使用").click() time.sleep(1) self.backpack_page.screenshot("use.png") time.sleep(4) self.backpack_page.screenshot('use.png') try: self.start_step("分享好友") self.backpack_page.wait_element("分享好友").click() time.sleep(2) self.hall_page.screenshot('Backpack_share.png') except: self.log_info("share_fail") # self.luadriver.keyevent(4) time.sleep(2) self.luadriver.keyevent(4) time.sleep(3) self.backpack_page.wait_element("兑换记录").click() time.sleep(3) self.backpack_page.wait_element("兑换记录1").click() time.sleep(2) try: self.backpack_page.wait_element("分享好友").click() time.sleep(2) self.hall_page.screenshot('Backpack_Enterpack2.png') except: self.log_info("share_fail1") def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' try: self.common.deletefile(self.luadriver) self.common.closedriver() except: self.log_info("close driver fail") finally: self.common.release_user(user_info['mid'])
class C31042_DFQP_Backpack_share(TestCase): ''' 安装了微信分享兑换记录 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 20 def pre_test(self): self.start_step("初始化环境") self.common = Common() self.message_page = Message_Page() self.hall_page = Hall_Page() self.personinfo_page = Personinfo_Page() self.backpack_page = Backpack_Page() global user_info user_info = self.common.get_user() print user_info global mid mid = self.common.get_config_value("casecfg","mid") return1 = PHPInterface.send_message(mid, "接口交互道具私信","接口交互道具私信",200,1,0) self.start_step("初始化driver") self.luadriver = self.common.setupdriver() self.start_step("关闭活动页面") # 每个用例都需要关闭活动,并切换到测试服 self.common.closeactivity(self.luadriver) def run_test(self): ''' 测试用例 ''' self.start_step("等待页面加载完成") self.hall_page.wait_element("同步标志") self.start_step("进入消息页面") self.hall_page.wait_element("消息").click() self.start_step("查看消息") try: try: element = self.message_page.get_elements("小琪妹") element[1].click() except: self.message_page.wait_element("小琪妹").click() self.message_page.screenshot('getcalls1.png') self.message_page.wait_element("立即领取").click() self.message_page.screenshot('getcalls2.png') self.message_page.wait_element("知道了").click() self.message_page.wait_element('已领取').get_attribute('text') == "已领取" except: print ("没有消息") self.hall_page.wait_element("头像").click() self.hall_page.wait_element("头像").click() self.hall_page.wait_element("同步标志") self.start_step("进入物品箱页面") self.hall_page.wait_element("物品箱").click() self.hall_page.screenshot('Backpack_Enterpack2.png') self.backpack_page.wait_element("物品名称").click() self.backpack_page.wait_element("使用").click() self.backpack_page.wait_element("手机号码").send_keys(user_info['user']) self.backpack_page.wait_element("确认手机号码").send_keys(user_info['user']) self.backpack_page.wait_element("使用").click() self.backpack_page.screenshot("use.png") time.sleep(4) self.backpack_page.screenshot('use.png') try: self.start_step("分享好友") self.backpack_page.wait_element("分享好友").click() time.sleep(2) self.hall_page.screenshot('Backpack_share.png') except: self.log_info("share_fail") # self.luadriver.keyevent(4) self.luadriver.keyevent(4) self.backpack_page.wait_element("兑换记录").click() self.backpack_page.wait_element("兑换记录1").click() try: self.backpack_page.wait_element("分享好友").click() time.sleep(2) self.hall_page.screenshot('Backpack_Enterpack2.png') except: self.log_info("share_fail1") def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' try: self.common.recover_user(mid=mid) self.common.closedriver() self.common.release_user(user_info['user']) except: self.log_info("close driver fail")
class C31038_DFQP_Backpack_Compose(TestCase): ''' 话费碎片回兑银币 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 20 def pre_test(self): self.start_step("初始化环境") self.common = Common() self.message_page = Message_Page() self.hall_page = Hall_Page() self.personinfo_page = Personinfo_Page() self.backpack_page = Backpack_Page() self.start_step("接口交互道具私信") global mid mid = self.common.get_config_value("casecfg","mid") return1 = PHPInterface.send_message(mid, "接口交互道具私信","接口交互道具私信",200,1,0) self.start_step("初始化driver") self.luadriver = self.common.setupdriver() self.start_step("关闭活动页面") # 每个用例都需要关闭活动,并切换到测试服 self.common.closeactivity(self.luadriver) def run_test(self): ''' 测试用例 ''' self.start_step("等待页面加载完成") self.hall_page.wait_element("同步标志") self.start_step("进入消息页面") self.hall_page.wait_element("消息").click() self.start_step("查看消息") try: try: element = self.message_page.get_elements("小琪妹") element[1].click() except: self.message_page.wait_element("小琪妹").click() self.message_page.screenshot('getcalls1.png') self.message_page.wait_element("立即领取").click() self.message_page.screenshot('getcalls2.png') self.message_page.wait_element("知道了").click() self.message_page.wait_element('已领取').get_attribute('text') == "已领取" except: print ("没有消息") self.hall_page.wait_element("头像").click() self.hall_page.wait_element("头像").click() self.hall_page.wait_element("同步标志") self.start_step("进入物品箱页面") self.hall_page.wait_element("物品箱").click() self.hall_page.screenshot('Backpack_Enterpack2.png') try: self.backpack_page.wait_element("物品名称").click() self.start_step("出售话费碎片") self.backpack_page.wait_element("出售").click() self.backpack_page.wait_element("出售").click() self.backpack_page.screenshot('Backpack_Enterpack2.png') except: print "未找到物品箱" # self.backpack_page.wait_element("返回").click() def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' try: self.common.recover_user(mid=mid) self.common.closedriver() except: self.log_info("close driver fail")
class C31040_DFQP_Backpack_Compose(TestCase): ''' 兑换实物及话费 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 10 def pre_test(self): self.start_step("初始化环境") self.common = Common() # 初始化Luadriver self.luadriver = self.common.setupdriver() self.common.deletefile(self.luadriver) self.message_page = Message_Page() self.hall_page = Hall_Page() self.personinfo_page = Personinfo_Page() self.backpack_page = Backpack_Page() self.start_step("接口交互道具私信") # 每个用例都需要关闭活动,并切换到测试服 self.common.closeactivity_switchserver(self.luadriver,"预发布") print self.casedata['mid'] # PHPInterface.set_env(PHPInterface.PRE_REPUBLISH_ENV) return1 = PHPInterface.send_message(int(self.casedata['mid']), "接口交互道具私信","接口交互道具私信",200005,1,0) self.start_step("判断是否登陆") if not self.common.isloginuser(self.luadriver): self.common.loginuser(self.casedata['user'], self.casedata['password']) self.common.closeactivity_switchserver(self.luadriver, "预发布") else: if self.personinfo_page.wait_element("账号ID").get_attribute('text') != self.casedata['cid']: self.common.loginuser(self.casedata['user'], self.casedata['password']) self.common.closeactivity_switchserver(self.luadriver, "预发布") try: self.personinfo_page.wait_element("关闭").click() except: print "已关闭窗口" def run_test(self): ''' 测试用例 ''' self.start_step("等待页面加载完成") self.hall_page.wait_element("同步标志") time.sleep(4) self.start_step("进入消息页面") self.hall_page.wait_element("消息").click() time.sleep(2) self.start_step("查看消息") try: try: element = self.message_page.get_elements("小琪妹") element[1].click() except: self.message_page.wait_element("小琪妹").click() time.sleep(3) self.message_page.screenshot('getcalls1.png') self.message_page.wait_element("立即领取").click() time.sleep(3) self.message_page.screenshot('getcalls2.png') self.message_page.wait_element("知道了").click() time.sleep(2) self.message_page.wait_element('已领取').get_attribute('text') == "已领取" except: print ("没有消息") time.sleep(3) self.message_page.wait_element("返回").click() time.sleep(3) self.hall_page.wait_element("头像").click() self.hall_page.wait_element("同步标志") self.start_step("进入物品箱页面") time.sleep(2) self.hall_page.wait_element("物品箱").click() time.sleep(2) self.hall_page.screenshot('Backpack_Enterpack2.png') self.backpack_page.wait_element("物品名称").click() time.sleep(2) self.start_step("兑换金币/金币") self.backpack_page.wait_element("使用").click() time.sleep(2) self.backpack_page.wait_element("手机号码").send_keys(self.casedata['user']) time.sleep(2) self.backpack_page.wait_element("确认手机号码").send_keys(self.casedata['user']) time.sleep(2) self.backpack_page.wait_element("使用").click() time.sleep(9) self.backpack_page.screenshot('use.png') self.start_step("分享好友") self.backpack_page.wait_element("分享好友").click() time.sleep(2) self.hall_page.screenshot('Backpack_Enterpack2.png') def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' self.common.deletefile(self.luadriver) self.common.closedriver()