Browse Source

1、CBaseLog在Pycharm运行时彩色输出
2、完成checkOptionValue接口。

scbc.sat2 5 years ago
parent
commit
a12740363c
2 changed files with 67 additions and 28 deletions
  1. 5 5
      ssat_sdk/MenuTree3/BaseLog.py
  2. 62 23
      ssat_sdk/MenuTree3/logic.py

+ 5 - 5
ssat_sdk/MenuTree3/BaseLog.py

@@ -42,31 +42,31 @@ class CBaseLog:
     def debug(self, msg):
         if self.__enableDebug:
             # 类型/类名:函数/内容
-            log_str = "【DEBUG】<%s::%s> %s" % (self.__class__.__name__, inspect.stack()[1][3], msg)
+            log_str = "\033[32m【DEBUG】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
             self.__printlog(log_str)
 
     def info(self, msg):
         if self.__enableInfo:
             # 类型/类名:函数/内容
-            log_str = "【INFO】<%s::%s> %s" % (self.__class__.__name__, inspect.stack()[1][3], msg)
+            log_str = "\033[33m【INFO】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
             self.__printlog(log_str)
 
     def warn(self, msg):
         if self.__enableWarn:
             # 类型/类名:函数/内容
-            log_str = "【WARN】<%s::%s> %s" % (self.__class__.__name__, inspect.stack()[1][3], msg)
+            log_str = "\033[34m【WARN】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
             self.__printlog(log_str)
 
     def error(self, msg):
         if self.__enableError:
             # 类型/类名:函数/内容
-            log_str = "【ERROR】<%s::%s> %s" % (self.__class__.__name__, inspect.stack()[1][3], msg)
+            log_str = "\033[31m【ERROR】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
             self.__printlog(log_str)
 
     def log(self, msg):
         if self.__enableLog:
             # 类型/类名/内容
-            log_str = "【LOG】<%s::%s> %s" % (self.__class__.__name__, inspect.stack()[1][3], msg)
+            log_str = "\033[35m【LOG】<%s::%s> %s \033[0m" % (self.__class__.__name__, inspect.stack()[1][3], msg)
             self.__printlog(log_str)
         
         

+ 62 - 23
ssat_sdk/MenuTree3/logic.py

@@ -19,22 +19,37 @@ class CMenuLogic(CBaseLog):
         self.__optionExcel = COptionExcel(self.__exData)
         self.__optionConfig = COptionConfig(self.__exData, self.__optionExcel)
 
+    '''
+    函数:判断两值(for_ocr与ocr识别结果)是否相等;
+    参数:
+        srcValue        源值,excel表格中读取的value值。
+        tagValue        目标值,ocr识别的结果值。
+    返回:相同返回True。
+    '''
+    def __isValueEqual(self, srcValue, tagValue):
+        self.info(u"源值=%s, 目标值=%s" % (str(srcValue), str(tagValue)))
+
     '''
     函数:移动到目标节点上(路径节点和value节点)
     参数:
         opa                 COptionAction对象;
         moveDirection       移动方向,True表示调用move_key[1](向下或向右), False表示调用move_key[0]。
         maxTry              最大移动次数,防止死循环。
-    返回:Boolean。
+    返回:Boolean是否在目标节点上, 文本或数值
     '''
     def __move2TargetNode(self, opa, moveDirection, maxTry=15):
         tryCount = 0
         # 是否到目标结点了;
         isOnTargetNode = False
+        # 目标节点聚焦状态;
+        targetFocus = False
+        # 目标文本或数值;
+        targetText = None
         # 移动到目标节点;
         while True:
             # 判断是否移动成功;
-            if opa.isOnTargetNode()[0] is True:
+            targetFocus, targetText = opa.isOnTargetNode()
+            if targetFocus is True:
                 # 如果已在目标结点,退出循环;
                 if opa.isOnTargetOption() or opa.isOnValueSheet():
                     self.info(u"<到达目标路径节点或value节点>")
@@ -59,7 +74,7 @@ class CMenuLogic(CBaseLog):
                 break
         # end-while
 
-        return isOnTargetNode
+        return isOnTargetNode, targetText
 
     '''
     函数:返回到主页(不一定就是Home页,一般指返回运行前的那个画面)
@@ -75,9 +90,11 @@ class CMenuLogic(CBaseLog):
         self.info(u"【如果设置value时,会自动回退到上一层父节点,此处操作正常。否则要多返回一层。】")
 
     '''
-    函数:设置option的值。
+    函数:设置指定的option的值为optionValue
     参数:
-    返回:
+        optionName      要设置的option;
+        optionValue     option要设置的值;
+    返回: Boolean。
     '''
     def setOptionValue(self, optionName, optionValue):
         self.info(u"【%s】【%s】" % (optionName, optionValue))
@@ -86,6 +103,7 @@ class CMenuLogic(CBaseLog):
 
         # 检测路径是否有效;
         if opa.checkRunOptionPath() is False:
+            self.__back2Home(opa)
             return False
 
         # 首先,调用根菜单;
@@ -93,11 +111,13 @@ class CMenuLogic(CBaseLog):
         time.sleep(1)
         if opa.isOnFirstOption() is False:
             self.error(u"未聚焦到根节点上,退出")
+            self.__back2Home(opa)
             return False
 
         # 遍历到目标option中;
-        if self.__move2TargetNode(opa, True) is False:
-            if self.__move2TargetNode(opa, False) is False:
+        if self.__move2TargetNode(opa, True)[0] is False:
+            if self.__move2TargetNode(opa, False)[0] is False:
+                self.__back2Home(opa)
                 return False
 
         # 到达目标option后,进入value表;
@@ -105,8 +125,9 @@ class CMenuLogic(CBaseLog):
         opa.enterNode()
 
         # 遍历到value节点中;
-        if self.__move2TargetNode(opa, True) is False:
-            if self.__move2TargetNode(opa, False) is False:
+        if self.__move2TargetNode(opa, True)[0] is False:
+            if self.__move2TargetNode(opa, False)[0] is False:
+                self.__back2Home(opa)
                 return False
 
         # 找到value节点,设置值;
@@ -117,9 +138,11 @@ class CMenuLogic(CBaseLog):
         self.__back2Home(opa)
 
     '''
-    函数:检测option的值;
+    函数:移动到目标option后,读取该option的value值,与optionValue进行比较,相等表示检测值与目标值一致;
     参数:
-    返回:
+        optionName      要设置的option;
+        optionValue     option要设置的值;
+    返回: Boolean。
     '''
 
     def checkOptionValue(self, optionName, optionValue):
@@ -129,6 +152,7 @@ class CMenuLogic(CBaseLog):
 
         # 检测路径是否有效;
         if opa.checkRunOptionPath() is False:
+            self.__back2Home(opa)
             return False
 
         # 首先,调用根菜单;
@@ -136,29 +160,29 @@ class CMenuLogic(CBaseLog):
         time.sleep(1)
         if opa.isOnFirstOption() is False:
             self.error(u"未聚焦到根节点上,退出")
+            self.__back2Home(opa)
             return False
 
         # 遍历到目标option中;
-        if self.__move2TargetNode(opa, True) is False:
-            if self.__move2TargetNode(opa, False) is False:
+        if self.__move2TargetNode(opa, True)[0] is False:
+            if self.__move2TargetNode(opa, False)[0] is False:
+                self.__back2Home(opa)
                 return False
 
         # 到达目标option后,进入value表;
         self.info(u"进入value表")
         opa.enterNode()
 
-        # 遍历到value节点中;
-        if self.__move2TargetNode(opa, True) is False:
-            if self.__move2TargetNode(opa, False) is False:
-                return False
-
-        # 找到value节点,设置值;
-        self.info(u"设置value值:一般只适用于Number类型或Input类型,不适合选择类型。但都必须调用,因为里面有enterkey操作")
-        opa.setOptionValue()
+        # 获取value节点值;
+        valueFocus, valueText = opa.isOnTargetNode()
+        self.info(u"===当前捕获的文本内容=%s,目标文本=%s,状态:%d===" % (str(valueText), str(optionValue), valueFocus))
 
         # 返回主页;
         self.__back2Home(opa)
 
+        # 聚焦状态就是结果;
+        return valueFocus
+
 
 if __name__ == "__main__":
     ml = CMenuLogic()
@@ -175,7 +199,7 @@ if __name__ == "__main__":
         time.sleep(2)
         ml.setOptionValue('picture_preset', 'movie')
 
-    if 1:
+    if 0:
         value = 33
         ml.setOptionValue('backlight', value)
         time.sleep(2)
@@ -187,4 +211,19 @@ if __name__ == "__main__":
         time.sleep(2)
         ml.setOptionValue('tint', value)
         time.sleep(2)
-        ml.setOptionValue('sharpness', value)
+        ml.setOptionValue('sharpness', value)
+
+    if 1:
+        ml.setOptionValue('picture_preset', 'standard')
+        time.sleep(5)
+        print "personal", ml.checkOptionValue('picture_preset', 'personal')
+        time.sleep(8)
+        print "dynamic", ml.checkOptionValue('picture_preset', 'dynamic')
+        time.sleep(8)
+        print "stadium", ml.checkOptionValue('picture_preset', 'stadium')
+        time.sleep(8)
+        print "standard", ml.checkOptionValue('picture_preset', 'standard')
+        time.sleep(8)
+        print "natural", ml.checkOptionValue('picture_preset', 'natural')
+        time.sleep(8)
+        print "movie", ml.checkOptionValue('picture_preset', 'movie')