def _test_view_layer():
    from wpyscripts.wetest.element import Element

    elemA = Element("a/b/c", 1)
    elemB = Element("x/y/z", 2)
    elemC = Element("a/b/c", 3)

    telemA = TouchElem("scene1", elemA)
    telemB = TouchElem("scene1", elemB)
    telemC = TouchElem("scene1", elemC)

    vlayer1 = ViewLayer()
    vlayer1.add_element(telemA)
    vlayer1.add_element(telemB)
    vlayer1.add_element(telemC)
    vlayer1.sort_elems_by_name()

    vlayer2 = ViewLayer()
    vlayer2.add_element(telemC)
    vlayer2.add_element(telemA)
    vlayer2.add_element(telemB)
    vlayer1.sort_elems_by_name()

    print("vlayer equals? %s" % (vlayer1 == vlayer2))
    print("vlayer1: ", vlayer1.fullstr())
    print("vlayer2: ", vlayer2.fullstr())

    set1 = set()
    set1.add(vlayer1)
    set1.add(vlayer2)
    print(set1)
Exemple #2
0
 def find_element(self, name):
     """
         通过GameObject.Find查找对应的GameObject
     :param name:
         GameObject.Find的参数
     :Usage:
         >>>import wpyscripts.manager as manager
         >>>engine=manager.get_engine()
         >>>button=engine.find_element('/Canvas/Panel/Button')
     :return:
         a instance of Element if find the GameObject,else return  None
         example:
         {"object_name":"/Canvas/Panel/Button",
         "instance":4257741}
     :rtype: Element
     :raise:
     """
     logger.debug("find_element:{0}".format(name))
     ret = self.socket.send_command(Commands.FIND_ELEMENTS, [name])
     if ret:
         ret = ret[0]
         if ret["instance"] == -1:
             return None
         else:
             return Element(ret["name"], ret["instance"])
     else:
         return None
def _test_touch_elem():
    from wpyscripts.wetest.element import Element

    elemA = Element("a/b/c", 1)
    elemB = Element("x/y/z", 2)
    elemC = Element("a/b/c", 3)

    telemA = TouchElem("scene1", elemA)
    telemB = TouchElem("scene1", elemB)
    telemC = TouchElem("scene1", elemC)

    list1 = [telemA, telemB]
    print("telemC in list? %s" % (telemC in list1))

    set1 = set()
    set1.add(telemA)
    set1.add(telemB)
    set1.add(telemC)
    print(set1)
Exemple #4
0
 def get_touchable_elements(self, params=None):
     """
         获取当前界面的可点击节点的列表(过期)
     :return:
         [(element1,point1),(element2,point2)]
         [({"object_name":"/Canvas/Panel/Button","Instance":4257741},{"x":250,"y":300}),.....]
     :raise WeTestRuntimeError
     """
     ret = self.socket.send_command(Commands.GET_UI_INTERACT_STATUS, params)
     elements = []
     for i in range(0, len(ret["elements"])):
         node = ret["elements"][i]
         element = Element(node["name"], node["instanceid"])
         elements.append((element, {"x": node["bound"]["x"] + node["bound"]["fWidth"] / 2,
                                    "y": node["bound"]["y"] + node["bound"]["fHeight"] / 2}))
     return elements
Exemple #5
0
    def find_elements_path(self, path):
        """
        表达式匹配获取符合的所有节点
        第一个节点"/"代表从根节点,如果不是代表可以从任意位置开始


        index:代表节点的位置。
             parent
           /      \
         index[0]  index[1]

         name:代表节点名称,"*"代表任意名称
         text:代表节点的文字内容(当前GameObject的挂载的Compenent)
         img:图片名称,sprite或者texture名称


         /Canvas/Panel/Button
         Canvas[0]{txt="hello"}/Button
         /Canvas/Panel/*[1]/Button
        :param path:
            需要查找的路径,/Canvas/Button[0]{txt=Button,img=img}
        :Usage:
            >>>import wpyscripts.manager as manager
            >>>engine=manager.get_engine()
            >>>button=engine.find_elements_path('/Canvas/Panel/Button')
            >>>button2=engine.find_elements_path('/Canvas/Panel/*[1]/Button')
            >>>button3=engine.find_elements_path('Canvas/Button{txt=hello}')
        :return:包含instance的Elements对象列表
            example:
            [{"objectName":"/Canvas/Panel/Button",
            "Instance":4257741},{"objectName":"/Canvas/Panel/Button",
            "Instance":4257742}]
        """
        nodeInfos = self._parse_path(path)
        if nodeInfos is None:
            raise WeTestInvaildArg("Error path")

        ret = self.send_command_with_retry(Commands.FIND_ELEMENT_PATH,
                                           nodeInfos)
        elements = []
        if ret is None:
            return []
        for e in ret:
            element = Element(e["name"], e["instance"])
            elements.append(element)

        return elements
Exemple #6
0
    def find_elements_by_component(self, name):
        """
            通过GameObject.FindObjectsOfType(Type.GetType(name))查找对应的GameObject.

            Type.GetType获取不到的话,默认会尝试name,Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
            及name, Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
        :param name:
            查找的类型的,AssemblyQualifiedName,如WetestManager,U3DAutomation, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
        :return:
            当前界面中所有挂载改界面的
        """
        ret = self.socket.send_command(Commands.FIND_ELEMENTS_COMPONENT, [name])
        elements = []
        for e in ret:
            element = Element(e["name"], e["instance"])
            elements.append(element)
        return elements
Exemple #7
0
 def get_touchable_elements_bound(self, params=None):
     """
         获取当前界面的可点击节点的列表
     :Usage:
         >>>import wpyscripts.manager as manager
         >>>engine=manager.get_engine()
         >>>buttons=engine.get_touchable_elements_bound()
     :return:
         [(element1,point1),(element2,point2)]
         [({"object_name":"/Canvas/Panel/Button","Instance":4257741},{"x":250,"y":300}),.....]
     :raise WeTestRuntimeError
     """
     ret = self.socket.send_command(Commands.GET_UI_INTERACT_STATUS, params)
     elements = []
     for i in range(0, len(ret["elements"])):
         node = ret["elements"][i]
         element = Element(node["name"], node["instanceid"])
         bound = ElementBound(node["bound"]["x"], node["bound"]["y"], node["bound"]["fWidth"],
                              node["bound"]["fHeight"])
         elements.append((element, bound))
     return ret["scenename"], elements