UAT_menu.py 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. # -*- coding:utf-8 -*-
  2. from UAT_runner import UATRunner
  3. from UAT_tree import UATTree
  4. import os, sys, time
  5. from UAT_log import error,info,debug
  6. DEBUG = True
  7. INFO = True
  8. ERROR = True
  9. class UATMenu():
  10. def __init__(self):
  11. self.uatRunner = UATRunner()
  12. self.cls = "UATMenu"
  13. '''
  14. 在目标option所在菜单下,聚焦至目标option(单层操作)
  15. :param optionName 目标option名字
  16. '''
  17. def moveToOption(self, optionName):
  18. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  19. return self.uatRunner.moveToOption(option)
  20. '''
  21. 在目标option所在菜单下,进入目标option(单层操作)
  22. :param optionName 目标option名字
  23. '''
  24. def openMoveOption(self, optionName):
  25. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  26. result = self.uatRunner.moveToOption(option)
  27. if result == False:
  28. return result
  29. return self.uatRunner.sendOptionEnterKey(option)
  30. '''
  31. 选中到目标option,如果在option所在页面,直接用moveToOption移动焦点选中,按路径执行选中步骤。
  32. :param optionName 目标option名字
  33. :param fromFirst 是否固定从firstparent到目标option
  34. '''
  35. def focusOption(self, optionName, fromFirst = False):
  36. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  37. return self.uatRunner.focusOption(option, fromFirst)
  38. '''
  39. 进入目标option,如果在option所在页面,直接用moveToOption移动焦点选中并进入,按路径执行选中步骤。
  40. :param optionName 目标option名字
  41. :param fromFirst 是否固定从firstparent到目标option
  42. '''
  43. def openOption(self, optionName, fromFirst = False):
  44. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  45. return self.uatRunner.openOption(option, fromFirst)
  46. '''
  47. 进入目标parent,在openOption基础上,增加了后续路过弹窗的无option界面parent。例如:usb的视频播放界面,有弹出提示框,continue或者replay。
  48. :param parentName 目标parent名字
  49. :param fromFirst 是否固定从firstparent到目标option
  50. '''
  51. def openParent(self, parentName, fromFirst=False):
  52. parent = self.uatRunner.uatPathManage.uatData.getParentDict(parentName)
  53. return self.uatRunner.openParent(parent, fromFirst)
  54. '''
  55. 选中到目标option,如果在option所在页面,直接用moveToOption移动焦点选中,按路径执行选中步骤。
  56. :param optionName 目标option名字
  57. :param value 目标option所设的值
  58. :param exitMenu 执行完以后,是否退出当前菜单
  59. :param fromFirst 是否从第一层开始执行(菜单页面是否处于初始状态)
  60. '''
  61. def setOptionValue(self, optionName, value, exitMenu=True, fromFirst=True):
  62. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  63. return self.uatRunner.setOptionValue(option, value, exitMenu, fromFirst)
  64. '''
  65. 读取该option的infoView参数,找到infoView的组件信息,并根据传入参数决定对infoView信息的判断
  66. :param optionName 目标option名字
  67. :param cmpPic 传入的图片路径。 如果传入此参数,则会将infoView所在的坐标进行裁剪,并对传入路径的图片进行比对
  68. :param cmpText 传入的文字内容。在不传入图片路径时,如果传入文字内容,则会对infoView所在坐标的文字进行识别,与传入文字比对
  69. 倘若cmpPic和cmpText均不传入,则只对infoView是否存在做判断。
  70. :returns 返回三个参数。
  71. 返回第一个参数为结果状态,1为找到infoView,并且传入条件比对成功;
  72. 0为找到infoView,但传入条件比对不成功;
  73. -1为未找到infoView,需要检查页面是否存在infoView,或者UATree中infoView配置是否正确
  74. 返回的第二个参数为测试时的整张截图;
  75. 返回的第三个参数为目标infoView所在坐标的裁剪图。
  76. '''
  77. def checkOptionInfoView(self, optionName, cmpText = "", cmpPic = ""):
  78. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  79. return self.uatRunner.checkOptionInfoView(option, cmpText = cmpText, cmpPic = cmpPic)
  80. '''
  81. 读取该option的infoView参数,并返回infoView组件信息。如果返回为None,则表示未找到infoView
  82. '''
  83. def getOptionInfoView(self, optionName):
  84. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  85. return self.uatRunner.getOptionInfoView(option)
  86. '''
  87. 检查当前页面是否存在该option
  88. '''
  89. def checkOptionExist(self, optionName):
  90. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  91. return self.uatRunner.checkOptionExist(option)
  92. def getOptionObject(self, optionName):
  93. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  94. return self.uatRunner.getOptionObject(option)
  95. '''
  96. 获取该option的取值范围,返回一个元组,包含左起最小值和右起最大值两个元素。
  97. '''
  98. def getOptionValueRange(self, optionName):
  99. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  100. try:
  101. vRange = (option[UATTree.TAB_TEXT_VALUE][UATTree.ValueView_Min],
  102. option[UATTree.TAB_TEXT_VALUE][UATTree.ValueView_Max])
  103. except Exception,e:
  104. error(self.cls, "getOptionValueRange", "option %s 获取取值范围失败!!!将返回空值!!!"%optionName, ERROR)
  105. vRange = None
  106. return vRange
  107. if __name__ == "__main__":
  108. uatMenu = UATMenu()
  109. print uatMenu.getOptionValueRange("usb_Brightness")
  110. # obj1 = uatMenu.uatRunner.pyU.getChoosedUIObject("select")
  111. # print "input:"
  112. # input()
  113. # obj2 = uatMenu.uatRunner.pyU.getChoosedUIObject("select")
  114. # if obj1 is None:
  115. # print "obj1 is None!!!"
  116. # print "obj1.info:",obj1.info
  117. # print "obj1 == obj2 is ", obj1.info == obj2.info
  118. # print uatMenu.checkOptionInfoView("usb_mp3")
  119. #测试打开弹窗,选择弹窗按钮.场景:1 在弹窗前面界面;2 在弹窗后面界面;
  120. # print uatMenu.focusOption("usb_videoPlay_replay")
  121. # print uatMenu.openParent("usb_h264AC3_replay")
  122. # print uatMenu.openOption("usb_video_mpeg2-mp3")
  123. # print uatMenu.openOption("usb_video_h264-ac3")