Best Python code snippet using ATX
android_layout.py
Source:android_layout.py  
...151        self.node_index = [n.iterindex for n in self.nodes]152153    def find_selector(self, node):154        '''find condition for locate a node, return (postion_node, condition, order)'''155        return self.__find_selector_by_structure(node)156        # return self.__find_selector_by_attrbutes(node)157        # return self.__find_selector_by_score(node)158159    def _filter_nodes(self, cond, nodes=None):160        if nodes is None:161            nodes = self.nodes162        res = []163        for n in nodes:164            match = True165            for k, v in cond.iteritems():166                attr = getattr(n, k)167                if isinstance(v, re._pattern_type) and \168                    isinstance(attr, basestring) and v.match(attr) is None:169                    match = False170                    break171                elif attr != v:172                    match = False173                    break174            if match:175                res.append(n)176        return res177178    def get_index_node(self, idx):179        '''get node with iterindex `idx`'''180        idx = self.node_index.index(idx)181        return self.nodes[idx]182183    def get_node_selector(self, n, sub=False):184        d = {}185        nodes = self.nodes186187        # try text, text in subnode cannot be all numbers188        if n.text and txt_pat.match(n.text) and not (sub and n.text.isdigit()):189            d['text'] = n.text190            nodes = self._filter_nodes(d, nodes)191            if len(nodes) == 1:192                return d, None193194        # try className, which is never blank195        d['className'] = n.className196        nodes = self._filter_nodes(d, nodes)197        if len(nodes) == 1:198            return d, None199200        # try description, like text201        if n.description and txt_pat.match(n.description) and not (sub and n.description.isdigit()):202            d['description'] = n.description203            nodes = self._filter_nodes(d, nodes)204            if len(nodes) == 1:205                return d, None206207        ## try resourceId, but on some phone the resourceId may not be available208        if n.resourceId:209            d['resourceId'] = n.resourceId210            nodes = self._filter_nodes(d, nodes)211            if len(nodes) == 1:212                return d, None213214        # return order in selected nodes under condition d.215        return d, nodes.index(n)216217    def __find_selector_by_structure(self, node):218        # try itself219        d, order = self.get_node_selector(node)220        if order is None:221            return node, d, None222223        # try its non-clickable decendants224        decendants = []225        def walk(n):226            for c in n.children:227                if c.clickable: continue228                decendants.append(c)229                walk(c)230        walk(node)231
...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
