123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- # -*- coding:utf-8 -*-
- import os, sys, time
- # from ssat_sdk import getIsSendKeyTakePicture
- from ssat_sdk.device_manage.capturecard_manager import CCardManager
- from ssat_sdk.sat_environment import getIsSendKeyTakePicture, getIsSendKeyTakePictureTester
- from ssat_sdk.utils import LoggingUtil
- from ssat_sdk.device_manage import RedRatHub3
- from ssat_sdk.device_manage import RedRatHub4
- from ssat_sdk.uiautomator2.adb_keyevent import AdbKeyevent
- from ssat_sdk.utils import string_util
- from ssat_sdk.sat_environment import getRCUDeviceSelected
- Operator_Device = "redrat2"
- if "redrat" == Operator_Device.lower():
- from TST.Remote import *
- class TvOperator():
- def __init__(self,isReStart = False):
- rcuDevice = getRCUDeviceSelected()
- if "redrat" == rcuDevice:
- self.operator = Remote()
- LoggingUtil.printLog(u"初始化TvOperator(深圳redrat3)")
- elif "redrat3" == rcuDevice:
- # self.operator = RedRatHub3.RedRat3()
- # self.operator = RedRatHub3.redrat3_singleton
- if isReStart:
- print u"重启红老鼠连接"
- self.operator = RedRatHub3.RedRat3()
- else:
- self.operator = RedRatHub3.redrat3_singleton
- LoggingUtil.printLog(u"初始化TvOperator(redrat3)")
- elif "redrat4" == rcuDevice:
- if isReStart:
- print u"重启红老鼠连接"
- self.operator = RedRatHub4.RedRat4()
- else:
- self.operator = RedRatHub4.redrat4_singleton
- LoggingUtil.printLog(u"初始化TvOperator(redrat3)")
- self.adbEvent = AdbKeyevent()
- # 创建视频采集对象
- self.ccard = CCardManager()
- '''
- 切换按键设备:deviceType:redrat2 代表红老鼠,adb 代表android adb keyevent机制。
- '''
- def setDeviceType(self, deviceType):
- if string_util.strcmp("redrat", deviceType):
- self.operator = Remote()
- LoggingUtil.printLog(u"初始化TvOperator(深圳redrat3)")
- elif string_util.strcmp("redrat2", deviceType):
- # self.operator = RedRatHub3.RedRat3()
- self.operator = RedRatHub3.redrat3_singleton
- LoggingUtil.printLog(u"初始化TvOperator(redrat3)")
- elif string_util.strcmp("adb", deviceType):
- self.operator = self.adbEvent
- def sendKey(self, keyName, times=1, duration=1):
- try:
- self.operator.sendKey(keyName, times, duration)
- except Exception, e:
- LoggingUtil.sendKey(keyName, False)
- return False
- # 如果按键截图开关打开时,进行截图并打印出截图信息
- if getIsSendKeyTakePicture() == "True" and getIsSendKeyTakePictureTester() == "True":
- CaseRunLogDirPath = LoggingUtil.getCaseRunLogDirPath()
- sendKeyTakePictureName = self.currentTime() + "_sendkey_takepicture.png"
- sendKeyTakePicturePath = os.path.join(CaseRunLogDirPath, sendKeyTakePictureName)
- self.ccard.takePicture(sendKeyTakePicturePath)
- LoggingUtil.printLog(
- u"执行sendKey!keyname:%s times:%s duration:%s 执行后截图:%s" % (
- str(keyName), str(times), str(duration), str(sendKeyTakePicturePath)))
- # LoggingUtil.printLog(u"按键执行后的截图:%s" % str(sendKeyTakePicturePath))
- else:
- try:
- LoggingUtil.printLog(
- u"执行sendKey!keyname:%s times:%s duration:%s" % (str(keyName), str(times), str(duration)))
- except Exception, e:
- LoggingUtil.printLog("Error:sendKey print Error")
- return True
- def currentTime(self):
- return time.strftime('%Y-%m-%d_%H_%M_%S', time.localtime(time.time()))
- def loadSignalDataSet(self, file):
- self.operator.loadSignalDataSet(file)
- def addSignalDataSet(self, file):
- self.operator.addSignalDataSet(file)
- '''
- 发送连续按键,最后一个参数可以是按键,也可以是按键间隔时间,单位s。
- '''
- def sendKeys(self, *keyList):
- endKey = keyList[keyList.__len__() - 1]
- time = 0.1
- keyNames = []
- if type(endKey) is float or type(endKey) is int:
- time = endKey
- keyNames = keyList[0:keyList.__len__() - 1]
- else:
- keyNames = keyList[0:keyList.__len__()]
- # print "sendKey,keyNames:",keyNames,time
- self.operator.sendKeys(keyNames, time)
- # self.operator.sendKeys(*keyList)
- def getDeviceName(self):
- return self.operator.getDeviceName()
- def getScriptName(self):
- return self.operator.getScriptName()
- def getKeyName(self):
- return self.operator.getKeyName()
- def close(self):
- self.operator.close()
- def getCurrentDeviceName(self):
- return self.getCurrentDeviceName()
- '''
- 启动android特定界面
- :param activity:android activity全称。例如:"com.google.android.tvlauncher/.inputs.InputsPanelActivity"
- :return 返回启动界面结果,True成功,False失败。
- '''
- def startActivity(self, activity):
- return self.adbEvent.startActivity(activity)
- '''
- 执行android shell下的指令,例如: ls
- '''
- def excuteShell(self, command):
- return self.adbEvent.excuteShell(command)
- '''
- 执行windows cmd的指令,例如:dir
- '''
- def excuteCmd(self, cmd):
- self.adbEvent.excuteCmd(cmd)
- if __name__ == "__main__":
- operator = TvOperator()
- # operator.setDeviceType("adb")
- operator.sendKeys("left", "right", "down", "down", 2)
- # operator.sendKeys("up","up")
|