def sendTagBroadcast(self, tagName, tagType): ''' 向性能采集apk发送场景广播 :param tagName: :param tagType: :return: ''' #广播类型 broadcastType = "com.boyaa.stf.UIScript" cmd_send = "shell am broadcast -a " + broadcastType + " --es tagName " + tagName + " --es tagType " + tagType self.platformLog(cmd_send) singleGlobalVar.get("luaDriver").adb(cmd_send)
def getResolution(self): ''' 获取分辨率 :return: 直接返回的是minicap截图需要的分辨率参数 游戏会自动设置横屏,所以width>height ''' if (self.resolution == None): screenWidth = singleGlobalVar.get( "luaDriver").get_window_size()['width'] screenHeigth = singleGlobalVar.get( "luaDriver").get_window_size()['height'] self.resolution = str(screenWidth) + "x" + str( screenHeigth) + "@" + str(screenWidth) + "x" + str( screenHeigth)
def taskScreenShot(self, fileName): ''' 由于appium截图效率问题,改为stf平台的minicap进行截图,其中-P如下: The format of the -P argument is: {RealWidth}x{RealHeight}@{VirtualWidth}x{VirtualHeight}/{Orientation}. The "virtual" size is the size of the desired projection. The orientation argument tells minicap what the current orientation of the device is (in degrees), 可执行minicap命令: adb shell LD_LIBRARY_PATH=/data/local/tmp exec /data/local/tmp/minicap -P 720x1280@720x1280/90 -s >/sdcard/minicap_1504612944860.jpg :param page: 元素所在page页 :param fileName: 截图保存的文件名 :return: ''' driver = singleGlobalVar.get("luaDriver") try: broadcastType = "com.boyaa.stf.screenShot" cmd_send = "shell am broadcast -a " + broadcastType + " --es sShotName " + fileName self.platformLog(cmd_send) driver.adb(cmd_send) except: self.platformLog("通知apk截图时间失败") try: cmd_pre = "shell LD_LIBRARY_PATH=/data/local/tmp exec /data/local/tmp/minicap -P " cmd_minicap = cmd_pre + self.getResolution( ) + "/0 -s >/mnt/sdcard/minicap_screen/" + fileName self.platformLog(cmd_pre) driver.adb(cmd_minicap) except: self.platformLog("调用minicap截图失败")
def deletefile(self): driver = singleGlobalVar.get("luaDriver") self.platformLog("deleteFile 开始测试前删除配置及性能相关文件") config = ConfigHelper(constant.cfg_path) package = config.getValue('appium', 'apppackage') #删除性能测试结果文件 delCsvCmd = "shell rm -r /mnt/sdcard/" + package + "_result.csv" self.platformLog(delCsvCmd) try: driver.adb(delCsvCmd) except: self.platformLog("删除性能测试文件失败") #minicap截图文件夹 delMinicapCmd = "shell rm -rf /mnt/sdcard/minicap_screen" self.platformLog(delMinicapCmd) try: driver.adb(delMinicapCmd) except: self.platformLog("删除minicap截图文件夹失败") mkdirCmd = "shell mkdir /mnt/sdcard/minicap_screen" self.platformLog(mkdirCmd) try: driver.adb(mkdirCmd) except: self.platformLog("新建minicap截图文件夹失败")
def startCollectApp(self): ''' 启动性能采集apk ''' self.platformLog("startCollectApp start pmonitor apk") config = ConfigHelper(constant.cfg_path) #性能采集apk acticity apkName = config.getValue('appium', 'collectApkName') # 被测apk packageName testAPKName = config.getValue('appium', 'apppackage') # 最终生成结果文件在手机中目录 resultFilePath = "/mnt/sdcard/" + testAPKName + "_result.csv" # SDK 17后由于权限问题,需要加--user 0 startCmd = "shell am start --user 0 -n " + apkName + " --es packageName " + testAPKName + " --es filePath " + resultFilePath self.platformLog(startCmd) singleGlobalVar.get("luaDriver").adb(startCmd)
def run_test(self): time.sleep(10) # self.hall_page.wait_element("同步标志") self.common.taskScreenShot("login.jpg") self.start_step("进入登陆页面") if self.hall_page.element_is_exist("暂不认证"): self.hall_page.wait_element("暂不认证").click() if self.hall_page.element_is_exist("内网"): self.hall_page.wait_element("内网").click() self.common.sendTagBroadcast(EnumSceneName.EnterHall, EnumSceneType.Start) while not self.hall_page.element_is_exist("大厅头像"): while self.hall_page.element_is_exist("游客登录"): try: self.hall_page.wait_element("游客登录").click() except: print "未找到此按钮" if self.hall_page.element_is_exist("暂不认证"): self.hall_page.wait_element("暂不认证").click() if self.hall_page.element_is_exist("进入游戏",2): self.hall_page.wait_element("进入游戏").click() self.game_page.to_hall_page("大厅头像") self.hall_page.wait_element("大厅头像",60) self.start_step("德州小测验") while (self.game_page.element_is_exist("go",2)): driver = singleGlobalVar.get("luaDriver") driver.keyevent(4) if self.hall_page.element_is_exist("取消"): self.hall_page.wait_element("取消").click() self.common.sendTagBroadcast(EnumSceneName.EnterHall, EnumSceneType.Stop) self.start_step("获取mid") self.hall_page.wait_element("大厅头像").click() mid = self.hall_page.wait_element("mid").get_attribute('text') self.common.set_config_value("casecfg", "mid", str(mid)) self.start_step("查看是否需要添加金币") money = self.hall_page.wait_element("金币数").get_attribute('text') money = money.replace(',','') print money if int(money) < 10000: Interface.add_Money(mid,10000) self.hall_page.wait_element("关闭").click()
def gameplay(self): i = 1 self.common.sendTagBroadcast(EnumSceneName.LaiziRoom, EnumSceneType.Start) self.game_page.wait_element("开始").click() count = 0 while self.game_page.element_is_exist("破产对话框", 1) == False: self.start_step("开始玩第%s场牌" % i) while self.game_page.element_is_exist("正在配桌中"): self.log_info("正在配桌中,等待") time.sleep(3) try: self.game_page.wait_element("换桌").click() except: self.log_info("换桌失败") count += 1 if (count > 10): self.game_page.is_in_gameroom(singleGlobalVar.get("luaDriver")) self.log_info("等待超时") return while self.game_page.element_is_exist("出牌",1)==False: list = ["叫地主", "抢地主"] for name in list: try: self.game_page.wait_element(name, 0).click() except: self.log_info("未出现抢地主按钮") if self.game_page.element_is_exist("继续游戏", 1): break if self.game_page.element_is_exist("机器人",1) == False: self.game_page.wait_element("托管",0).click() while (self.game_page.element_is_exist("提示", 1) or self.game_page.element_is_exist("出牌", 1)): try: self.game_page.wait_element("提示",0).click() self.game_page.element_is_exist("出牌",0).click() except: self.log_info("未出现提示按钮") while self.game_page.element_is_exist("继续游戏",1)==False: time.sleep(1) self.log_info("正在游戏中") endtime = time.time() if (endtime - starttime)/60 > self.timeout - 10: self.game_page.is_in_gameroom(singleGlobalVar.get("luaDriver")) return self.common.taskScreenShot("gameover_%s.jpg" % i) while self.game_page.element_is_exist("继续游戏", 1): while self.game_page.element_is_exist("QQ分享"): singleGlobalVar.get("luaDriver").keyevent(4) self.game_page.wait_element("继续游戏").click() while self.game_page.element_is_exist("去底倍场", 1): self.game_page.wait_element("去底倍场",0).click() while (self.game_page.element_is_exist("立即购买",1) or self.game_page.element_is_exist("立即领取",1)): try: self.game_page.wait_element("关闭1").click() except: self.log_info("未出现关闭按钮") try: self.game_page.wait_element("关闭2").click() except: self.log_info("未出现关闭按钮") self.game_page.exit_game(singleGlobalVar.get("luaDriver")) self.common.user_money(money=1000) self.start_step("进去癞子场") while self.hall_page.element_is_exist("游戏列表"): elments1 = self.hall_page.get_elements("游戏列表") elments1[1].click() self.game_page.wait_element("切换按钮").click() elments = self.game_page.get_elements("切换玩法") elments[0].click() self.level_page.wait_element("快速开始").click() self.start_step("点击初级场房间") while self.level_page.element_is_exist("房间列表"): self.level_page.wait_element("房间列表").click() while self.game_page.element_is_exist("开始",2): self.game_page.wait_element("开始").click() i += 1
def closedriver(self): '''关闭driver ''' singleGlobalVar.get("luaDriver").quit()
def sendStopServiceBroad(self): self.platformLog("sendStopServiceBroad") # 广播类型 broadcastType = "com.boyaa.stf.stopService" cmd_send = "shell am broadcast -a " + broadcastType singleGlobalVar.get("luaDriver").adb(cmd_send)