class C70627_Moneyroom_Ready_Lock(TestCase): ''' 玩家进入银币/金条房间已准备,短时间锁屏 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 10 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.yuepai_page = Yuepai_Page() # 初始化Luadriver self.start_step("初始化driver") self.luadriver = self.common.setupdriver() # 每个用例都需要关闭活动,把这个放在初始化里面实现 self.common.closeactivity(self.luadriver) self.start_step("获取mid") mid = self.common.get_mid() self.start_step("设置为20000银币") self.common.set_coin(mid=mid, value='20000') self.common.switchserver() 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("创建银币/金条房") self.yuepai_page.create_room("创建银币金条房") try: self.yuepai_page.wait_element("准备", 30).click() except: self.log_info("当前页面未展示准备按钮") self.yuepai_page.element_is_exist("已准备") time.sleep(10) self.yuepai_page.screenshot("before.png") self.start_step("锁屏") self.luadriver.keyevent(26) # 锁屏 time.sleep(2) self.yuepai_page.screenshot("being.png") self.start_step("解锁") self.common.unlock() time.sleep(6) self.yuepai_page.screenshot("after.png") self.yuepai_page.element_is_exist("已准备") self.start_step("退出约牌房") self.yuepai_page.exit_yuepai_page() self.hall_page.wait_element("同步标志") def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' self.common.closedriver()
class C70628_Moneyroom_Ready_Back_Longtime(TestCase): ''' 玩家进入银币/金条房间已准备 长时间切换后台 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 15 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.yuepai_page = Yuepai_Page() capabilities = {} capabilities['newCommandTimeout'] = 60 * 3 self.luadriver = self.common.setupdriver(capabilities) # 每个用例都需要关闭活动,把这个放在初始化里面实现 self.common.closeactivity(self.luadriver) self.start_step("获取mid") mid = self.common.get_mid() self.start_step("设置为20000银币") self.common.set_coin(mid=mid, value='20000') self.common.switchserver() 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("创建银币/金条房") self.yuepai_page.create_room("创建银币金条房") try: self.yuepai_page.wait_element("准备", 30).click() except: self.log_info("当前页面未展示准备按钮") self.yuepai_page.element_is_exist("已准备") time.sleep(10) self.yuepai_page.screenshot("before.png") self.start_step("切换到后台") self.luadriver.keyevent(3) # home time.sleep(2 * 60) self.yuepai_page.screenshot("being.png") self.common.unlock() time.sleep(4) self.yuepai_page.screenshot("agfter.png") self.yuepai_page.element_is_exist("已准备") self.start_step("退出约牌房") self.yuepai_page.exit_yuepai_page() self.hall_page.wait_element("同步标志") def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' self.common.closedriver()
class Initialize(TestCase): ''' 用例初始化 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 10 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.game_page = Game_Page() # 初始化Luadriver self.luadriver = self.common.setupdriver() # self.common.deletefile(self.luadriver) self.common.closeactivity_switchserver(self.luadriver) def run_test(self): ''' 测试用例 ''' self.hall_page.wait_element("同步标志") self.hall_page.screenshot("hall.png") self.start_step("获取mid") mid = self.common.get_mid() self.common.set_config_value("casecfg", "mid", str(mid)) print self.common.get_config_value("casecfg", "mid") env = self.common.get_config_value('casecfg', 'env') if env != "0": self.log_info("游戏机器人开关设置为关闭") self.start_step("设置第一页的游戏开关") gamelist = self.game_page.get_game_list() print gamelist for i in range(len(gamelist)): gamename = gamelist[i].get_attribute("name") gameid = filter(lambda ch: ch in '0123456789', gamename) print gameid self.game_page.set_robot(gameid=gameid) self.start_step("点击大厅第二页") if (self.game_page.element_is_exist("右三角标") == True): self.game_page.wait_element("右三角标").click() else: self.game_page.wait_element("左三角标").click() self.start_step("查看第二屏子游戏列表") gamelist = self.game_page.get_game_list() print gamelist for i in range(len(gamelist)): gamename = gamelist[i].get_attribute("name") gameid = filter(lambda ch: ch in '0123456789', gamename) print gameid self.game_page.set_robot(gameid=gameid) self.common.recover_user(str(mid)) def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' self.common.closedriver()
class C70627_Moneyroom_Ready_Back(TestCase): ''' 玩家进入银币/金条房间已准备,短时间切换后台 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 10 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.yuepai_page = Yuepai_Page() self.start_step("初始化driver") self.luadriver = self.common.setupdriver() # 每个用例都需要关闭活动,把这个放在初始化里面实现 self.common.closeactivity(self.luadriver) self.start_step("获取mid") mid = self.common.get_mid() self.start_step("设置为20000银币") self.common.set_coin(mid=mid, value='20000') self.common.switchserver() 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("创建银币/金条房") self.yuepai_page.create_room("创建银币金条房") try: self.yuepai_page.wait_element("准备", 120).click() except: self.log_info("当前页面未展示准备按钮") self.yuepai_page.element_is_exist("已准备") self.yuepai_page.screenshot("before.png") self.start_step("home键") self.luadriver.keyevent(3) # home time.sleep(2) self.yuepai_page.screenshot("being.png") # self.yuepai_page.wait_element("准备") self.start_step("拉起游戏") config = ConfigHelper(constant.cfg_path) self.luadriver.start_activity(config.getValue('appium', 'apppackage'), config.getValue('appium', 'appactivity')) time.sleep(1) self.yuepai_page.screenshot("after.png") self.yuepai_page.element_is_exist("已准备") self.start_step("退出约牌房") self.yuepai_page.exit_yuepai_page() self.hall_page.wait_element("同步标志") def post_test(self): ''' 测试用例执行完成后,清理测试环境 ''' self.common.closedriver()
class C27342_Gamelist_Broadcast(TestCase): ''' 有广播时选场界面广播条展示 ''' owner = "LucyLiu" status = EnumStatus.Design priority = EnumPriority.High timeout = 15 def pre_test(self): self.common = Common() self.hall_page = Hall_Page() self.game_page = Game_Page() self.setting_page = Setting_Page() self.personinfo_page = Personinfo_Page() global user_info, MID user_info = self.common.get_user() self.log_info("userinfo:%s" % user_info) self.start_step("初始化Luadriver") self.luadriver = self.common.setupdriver() self.start_step("关闭活动页面") self.common.closeactivity(self.luadriver) self.start_step("登陆") self.hall_page.wait_element("头像").click() self.common.loginuser(user_info['user'], user_info['password']) self.common.closeActivityBtn() MID = self.common.get_mid() PHPInterface.set_level(MID, 16) self.common.set_coin(MID, 100000) # 将银币值设为100000 self.common.switchserver() self.common.closeActivityBtn() def broadcast(self, is_next=False): game_list = self.game_page.get_game_list() for i in range(len(game_list)): self.start_step("进入子游戏:%s" % game_list[i].get_attribute("name")) game_list[i].click() if (self.game_page.game_is_download() == False): self.log_info("下载游戏ID:%s 失败" % game_list[i]) self.game_page.screenshot("%s_downfail.png" % game_list[i].get_attribute("name")) try: self.hall_page.wait_element("关闭对话框").click() except: print "关闭弹框" continue try: self.game_page.wait_element("同步标志", 20) if (self.game_page.element_is_exist("广播") == True): self.log_info("游戏ID:%s 存在广播按钮" % game_list[i].get_attribute("name")) self.game_page.wait_element("广播").click() self.game_page.wait_element('输入文字').send_keys('11') self.start_step('点击发送') self.game_page.wait_element('发送').click() time.sleep(1) self.game_page.screenshot( "%s_broadcast.png" % game_list[i].get_attribute("name")) self.game_page.wait_element("返回1").click() else: self.log_info("游戏ID:%s 不存在广播按钮" % game_list[i].get_attribute("name")) except: try: self.hall_page.wait_element("关闭").click() except: self.log_info("未找到元素") try: self.game_page.wait_element("返回1").click() except: self.log_info("未找到元素") if is_next == True: self.log_info("is_next为True则表示遍历的是第二页的子游戏") try: self.game_page.wait_element("右三角标").click() except: self.log_info("右三角标不存在") def run_test(self): ''' 测试用例 ''' self.start_step("等待页面加载完成") self.hall_page.wait_element("同步标志") self.start_step("查看首屏子游戏列表") self.broadcast() while (self.hall_page.element_is_exist("同步标志") == False): self.game_page.wait_element("返回1").click() self.start_step("点击大厅第二页") if (self.game_page.element_is_exist("右三角标") == True): self.game_page.wait_element("右三角标").click() else: self.game_page.wait_element("左三角标").click() self.start_step("查看第二屏子游戏列表") self.broadcast(is_next=True) def post_test(self): ''' 测试用例执行完后,清理测试环境 ''' try: self.common.deletefile(self.luadriver) self.common.recover_user(MID) self.common.closedriver() except: self.log_info("close driver fail") finally: self.common.release_user(user_info['user'])
class C27654_CountShowAfterGame(TestCase): ''' 牌局结束查看结算界面显示 ''' owner = "LukeJiang" status = EnumStatus.Design priority = EnumPriority.High timeout = 15 try_find_time = 5 child_game_timeout = 10 # game1500 鞍山麻将 -- 网络特么的有问题 # game24 五狼腿 -- 网络特么的有问题 # game23 托三批 # 1502 三打一 # game25 升级 -- 网络有问题 # game2603 -- 五十k -- 网络有问题 # game203 -- 斗地主 # 棋牌类没有准备按钮, 并且游戏结束后会自动跳出界面,忽略棋牌类游戏 excluded_game = [ 'game20', 'game2002', 'game1500', 'game1502', 'game24', 'game23', 'game25', 'game2603' ] level = 0 pending = True def init(self): self.common = Common() self.hall_page = Hall_Page() self.setting_page = Setting_Page() self.game_page = Game_Page() self.person_info_page = Personinfo_Page() self.start_step("初始化driver") self.luadriver = self.common.setupdriver() self.start_step("关闭弹出框") self.common.closeactivity(self.luadriver) def log_info(self, msg): self.log.info(msg) def _restart_app(self): # 重启游戏 # driver quite self.common.closedriver() # recreate driver self.init() def pre_test(self): self.log = Logger().get_logger() self.log_info("TestCase: 牌局结束查看结算界面显示") self.init() def run_test(self): self.common.switchserver() self.start_step("关闭弹出框") self.common.closeactivity(self.luadriver) time.sleep(15) self.kill_popup_windom() mid = self.common.get_mid() self.log_info("当前用户mid:%s" % str(mid)) r_v = PHPInterface.set_coin(mid, 50000) self.log_info("设置用户 银币数 接口返回值:%s" % str(r_v)) self.common.switchserver() time.sleep(15) self.kill_popup_windom() self.loop_current_page_game() r_v = PHPInterface.set_vip(mid, 5) self.log_info("设置用户 vip 接口返回值:%s" % str(r_v)) self.log_info("第二页游戏") self.game_page.wait_element("右三角标", timesleep=1).click() self.loop_current_page_game() def loop_current_page_game(self): i = self.try_find_time game_list = [] while i: game_list = self.game_page.get_game_list() if len(game_list) != 0: break i = i - 1 time.sleep(1) if len(game_list) == 0: raise Exception("子游戏列表为空") for game in game_list: game_name = game.get_attribute('name') self.log_info("====准备进入子游戏:%s====" % game_name) if game_name in self.excluded_game: #['game20', 'game2002']: continue r_v = PHPInterface.set_match_config( game=int(game_name.replace("game", "")), basechiptype=0, playmode=0, roomlevel=12 + self.level, baseconfig= "BASE_CHIPS=>100,HIGH_LIMIT=>-1,HIGH_LIMIT_EXIT=>-1,SERVICE_FEE=>10,ADDROBOTFLAG=>1,ROBOT_MAX_NUMBER=>2", extraconfig="") self.log_info("设置场次接口返回值:%s" % str(r_v)) if self.enter_game_room(game_name, find_in_elements=False, level=self.level): self.ready() # 游戏开始后 while 1: if not self.try_find_element("换桌"): break time.sleep(1) self.log_info("等待游戏结束") end_time = time.time() + self.child_game_timeout * 60 jdz_has_clicked = False ddz_qf_clicked = False end_tag_showed = False close_btn_showed = False while 1: # 超时10分钟, 睡眠间隔2s ddz_gameover = self.try_find_element( "ddz_gameover", find_in_elements=False) # ready_btn = self.game_page.wait_element("牌局结束标志", timeout=60 * self.child_game_timeout, frequency=2) if ddz_gameover: end_tag_showed = True self.log_info("ddz_gameover: 牌局已结束") close_btn = self.try_find_element( "关闭按钮", page_object=self.hall_page) if close_btn: close_btn_showed = True self.log_info("关闭按钮: 牌局已结束") if end_tag_showed or close_btn_showed: if not close_btn_showed: counter = self.try_find_element( "btnView", find_in_elements=False) if counter: counter.click() self.game_page.screenshot("counter_%s.png" % game_name) break share_btn = self.try_find_element("share_btn", find_in_elements=False) if share_btn: self.log_info("share_btn: 牌局已结束") self.try_find_element("close_btn", find_in_elements=False, try_time=3).click() close_btn_showed = True break if not jdz_has_clicked: jdz = self.try_find_element("callLordBtn", find_in_elements=False) if jdz: jdz.click() # 新斗地主,叫地主按钮会在一瞬间消失,此时点击准备按钮会跑在(0,0)位置 if self.element_exists("退出", page_object=self.game_page, timesleep=1): self.log_info("点击叫地主, 存在退出按钮") self.luadriver.keyevent(4) jdz_has_clicked = True self.log_info("点击叫地主") if not ddz_qf_clicked: qf = self.try_find_element("叫抢场1分", page_object=self.game_page) if qf: qf.click() self.log_info("点击抢分1分") ddz_qf_clicked = True if self.element_exists("退出", page_object=self.game_page, timesleep=1): self.log_info("点击叫抢场1分, 存在退出按钮") self.luadriver.keyevent(4) if time.time() > end_time: self.log_info("游戏超时") raise Exception("玩游戏超时") self.back_to_hall() def enter_game_room(self, target_gamename, find_in_elements=True, level=0, page_object=None): self.log_info("准备进入子游戏:%s" % target_gamename) # 在当前页中点击target子游戏 child_game = None i = self.try_find_time while i: time.sleep(1) self.log_info("获取子游戏:%s" % target_gamename) try: if find_in_elements: child_game = self.hall_page.get_element( target_gamename ) # self.luadriver.find_lua_element_by_name(target_gamename) else: child_game = self.try_find_element( target_gamename, find_in_elements=False ) #self.luadriver.find_lua_element_by_name(target_gamename) except: pass if child_game: break i = i - 1 if child_game: self.log_info("点击子游戏:%s" % target_gamename) child_game.click() else: next_page = self.try_find_element( "right_arrow", find_in_elements=False, try_time=self.try_find_time ) #self.luadriver.find_lua_element_by_name("right_arrow") if next_page: next_page.click() time.sleep(1) if find_in_elements: child_game = self.hall_page.wait_element(target_gamename) else: child_game = self.try_find_element(target_gamename, find_in_elements=False) if child_game: child_game.click() if not child_game: raise Exception("获取不到子游戏") retry_btn = None try: retry_btn = self.game_page.get_element("重新获取1") self.luadriver.keyevent(4) except: pass if retry_btn: return False # 判断是否需要下载资源 download_btn = None try: download_btn = self.game_page.get_element("资源下载-确定") except: pass room_showed = False if download_btn: download_btn.click() # 等待资源下载完成, 等待结束条件: 场次UI出现 self.log_info("开始下载游戏") while 1: if self.element_exists("swf_view", find_in_elements=False): break if self.element_exists("房间场次", find_in_elements=True, page_object=self.game_page): room_showed = True break time.sleep(1) #if self.game_page.wait_element("房间场次", timeout=60 * 10, frequency=1): #break else: if not self.element_exists("swf_view", find_in_elements=False, try_time=self.try_find_time): room_showed = True if not room_showed: market_btns = self.try_find_elements("swf_view", find_in_elements=False, try_time=self.try_find_time) self.log_info("斗地主金银场次选择:%s" % str(market_btns)) if len(market_btns) == 0: raise Exception("获取不到金银场次选择") market_btns[0].click() time.sleep(2) level_btns = self.game_page.wait_element("叫抢初级场").click() #self.log_info("斗地主初中高场次选择:%s" % str(level_btns)) #if len(level_btns) == 0: # raise Exception("获取不到初中高场次选择") #level_btns[0].click() return True else: level = "初级场" if level == 0 else "中级场" if level == 1 else "高级场" # 点击初级场 self.log_info("点击%s" % level) self.game_page.wait_element(level).click() return True def element_exists(self, name, find_in_elements=True, try_time=1, page_object=None, timesleep=0.5): time.sleep(timesleep) target_element = None i = try_time while i: try: if find_in_elements: target_element = page_object.get_element( name, timesleep=1 ) # self.luadriver.find_lua_element_by_name(target_gamename) else: target_element = self.luadriver.find_lua_element_by_name( name) except: pass if target_element: break i = i - 1 if target_element: return True return False def try_find_element(self, name, find_in_elements=True, try_time=1, page_object=None): target_element = None i = try_time while i: try: if find_in_elements: target_element = page_object.get_element( name, timesleep=1 ) # self.luadriver.find_lua_element_by_name(target_gamename) else: target_element = self.luadriver.find_lua_element_by_name( name) except: pass if target_element: break i = i - 1 return target_element def try_find_elements(self, name, find_in_elements=True, try_time=1, page_object=None): target_elements = [] i = try_time while i: try: if find_in_elements: target_elements = page_object.get_elements( name, timesleep=1 ) # self.luadriver.find_lua_element_by_name(target_gamename) else: target_elements = self.luadriver.find_lua_elements_by_name( name) except: pass if target_elements: break i = i - 1 return target_elements if target_elements != None else [] def wait_for_hallstable(self): self.log_info("等待大厅稳定") end_time = time.time() + self.child_game_timeout * 60 while 1: game_list = self.game_page.get_game_list() if len(game_list) != 0: break if time.time() > end_time: raise Exception("等待大厅超时") time.sleep(1) return True def back_to_hall(self, back_time=4): self.log_info("返回到大厅") for i in range(back_time): self.luadriver.keyevent(4) time.sleep(0.5) while 1: if self.wait_for_hallstable() and not self.element_exists( "title", find_in_elements=False, try_time=2): break else: self.luadriver.keyevent(4) return True def ready(self): # 有准备的按准备 self.log_info("有无准备按钮") i = self.try_find_time while i: ready_btn = None try: ready_btn = self.game_page.get_element("准备", timesleep=1) except: pass if ready_btn: self.log_info("点击准备按钮") ready_btn.click() # 新斗地主,准备按钮会在一瞬间消失,此时点击准备按钮会跑在(0,0)位置 if self.element_exists("退出", page_object=self.game_page, timesleep=1): self.log_info("点击准备按钮, 存在退出按钮") self.luadriver.keyevent(4) break i = i - 1 def post_test(self): self.log_info("post test") #self.common.deletefile(self.luadriver) self.luadriver.quit() def kill_popup_windom(self, backtime=4): # 每日签到 popup = self.try_find_element("signupTips1", find_in_elements=False, try_time=2) if popup: self.log_info("每日签到存在") sign = self.try_find_element("rewardIcon", find_in_elements=False, try_time=2) if sign: sign.click() time.sleep(3) self.try_find_element("closeBtn", find_in_elements=False, try_time=2).click() # 问卷调查 暂时没法标识 # 无条件back 4次 for i in range(backtime): self.luadriver.keyevent(4) time.sleep(0.5) # 新手礼包 reward = self.try_find_element("login_money_anim", find_in_elements=False, try_time=2) if reward: t = self.try_find_element("领新手礼包", page_object=self.hall_page) if t: t.click() while 1: if not self.try_find_element( "exitGameView", find_in_elements=False, try_time=2): break else: self.luadriver.keyevent(4)