UAT_menu.py 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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, nextParentName=""):
  44. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  45. nextParent = self.uatRunner.uatPathManage.uatData.getParentDict(nextParentName)
  46. return self.uatRunner.openOption(option, fromFirst, nextParent)
  47. '''
  48. 进入目标parent,在openOption基础上,增加了后续路过弹窗的无option界面parent。例如:usb的视频播放界面,有弹出提示框,continue或者replay。
  49. :param parentName 目标parent名字
  50. :param fromFirst 是否固定从firstparent到目标option
  51. '''
  52. def openParent(self, parentName, fromFirst=False):
  53. parent = self.uatRunner.uatPathManage.uatData.getParentDict(parentName)
  54. return self.uatRunner.openParent(parent, fromFirst)
  55. '''
  56. 选中到目标option,如果在option所在页面,直接用moveToOption移动焦点选中,按路径执行选中步骤。
  57. :param optionName 目标option名字
  58. :param value 目标option所设的值,若为checkbox,值范围为[True,False],True表示勾选,False表示取消勾选
  59. :param exitMenu 执行完以后,是否退出当前菜单
  60. :param fromFirst 是否从第一层开始执行(菜单页面是否处于初始状态)
  61. '''
  62. def setOptionValue(self, optionName, value, exitMenu=True, fromFirst=True):
  63. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  64. return self.uatRunner.setOptionValue(option, value, exitMenu, fromFirst)
  65. '''
  66. 读取该option的infoView参数,找到infoView的组件信息,并根据传入参数决定对infoView信息的判断
  67. :param optionName 目标option名字
  68. :param cmpPic 传入的图片路径。 如果传入此参数,则会将infoView所在的坐标进行裁剪,并对传入路径的图片进行比对
  69. :param cmpText 传入的文字内容。在不传入图片路径时,如果传入文字内容,则会对infoView所在坐标的文字进行识别,与传入文字比对
  70. 倘若cmpPic和cmpText均不传入,则只对infoView是否存在做判断。
  71. :returns 返回三个参数。
  72. 返回第一个参数为结果状态,1为找到infoView,并且传入条件比对成功;
  73. 0为找到infoView,但传入条件比对不成功;
  74. -1为未找到infoView,需要检查页面是否存在infoView,或者UATree中infoView配置是否正确
  75. 返回的第二个参数为测试时的整张截图;
  76. 返回的第三个参数为目标infoView所在坐标的裁剪图。
  77. '''
  78. def checkOptionInfoView(self, optionName, cmpText = "", cmpPic = ""):
  79. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  80. return self.uatRunner.checkOptionInfoView(option, cmpText = cmpText, cmpPic = cmpPic)
  81. '''
  82. 读取该option的infoView参数,并返回infoView组件信息。如果返回为None,则表示未找到infoView
  83. '''
  84. def getOptionInfoView(self, optionName):
  85. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  86. return self.uatRunner.getOptionInfoView(option)
  87. '''
  88. 检查当前页面是否存在该option
  89. '''
  90. def checkOptionExist(self, optionName):
  91. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  92. return self.uatRunner.checkOptionExist(option)
  93. def getOptionObject(self, optionName):
  94. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  95. return self.uatRunner.getOptionObject(option)
  96. '''
  97. 获取该option的取值范围,返回一个元组,包含左起最小值和右起最大值两个元素。
  98. '''
  99. def getOptionValueRange(self, optionName):
  100. option = self.uatRunner.uatPathManage.uatData.getOption(optionName)
  101. try:
  102. vRange = (option[UATTree.TAB_TEXT_VALUE][UATTree.ValueView_Min],
  103. option[UATTree.TAB_TEXT_VALUE][UATTree.ValueView_Max])
  104. except Exception,e:
  105. error(self.cls, "getOptionValueRange", "option %s 获取取值范围失败!!!将返回空值!!!"%optionName, ERROR)
  106. vRange = None
  107. return vRange
  108. if __name__ == "__main__":
  109. uatMenu = UATMenu()
  110. # uatMenu.openOption("av_backlight_settings",nextParentName="av_backlight_settings")
  111. # uatMenu.openParent("av_backlight_settings")
  112. uatMenu.setOptionValue("av_backlight",50, fromFirst=True)
  113. # uatMenu.setOptionValue("av_picture_mode","av_movie")
  114. # print uatMenu.getOptionValueRange("usb_Brightness")
  115. # obj1 = uatMenu.uatRunner.pyU.getChoosedUIObject("select")
  116. # print "input:"
  117. # input()
  118. # obj2 = uatMenu.uatRunner.pyU.getChoosedUIObject("select")
  119. # if obj1 is None:
  120. # print "obj1 is None!!!"
  121. # print "obj1.info:",obj1.info
  122. # print "obj1 == obj2 is ", obj1.info == obj2.info
  123. # print uatMenu.checkOptionInfoView("usb_mp3")
  124. #测试打开弹窗,选择弹窗按钮.场景:1 在弹窗前面界面;2 在弹窗后面界面;
  125. # print uatMenu.focusOption("usb_videoPlay_replay")
  126. # print uatMenu.openParent("usb_h264AC3_replay")
  127. # print uatMenu.openOption("usb_video_mpeg2-mp3")
  128. # print uatMenu.openOption("usb_video_h264-ac3")