Best Python code snippet using pyatom_python
utils.py
Source:utils.py
...557 obj_name=u"%s" % obj_name558 stripped_obj_name=re.sub(strip, u"", obj_name)559 obj_name=fnmatch.translate(obj_name)560 stripped_obj_name=fnmatch.translate(stripped_obj_name)561 object_list=self._get_appmap(window_handle, ldtp_window_name, force_remap)562 def _internal_get_object_handle(object_list):563 # To handle retry this function has been introduced564 for obj in object_list:565 if obj_type and object_list[obj]["class"] != obj_type:566 # If object type is provided and doesn't match567 # don't proceed further, just continue searching568 # next element, even though the label matches569 continue570 label=object_list[obj]["label"]571 strip=r"( |:|\.|_|\n)"572 if not isinstance(label, unicode):573 # Convert to unicode string574 label=u"%s" % label575 stripped_label=re.sub(strip, u"", label)576 # FIXME: Find object name in LDTP format577 if re.match(obj_name, obj) or re.match(obj_name, label) or \578 re.match(obj_name, stripped_label) or \579 re.match(stripped_obj_name, obj) or \580 re.match(stripped_obj_name, label) or \581 re.match(stripped_obj_name, stripped_label):582 # Return object map583 return object_list[obj]584 if wait_for_object:585 obj_timeout=self._obj_timeout586 else:587 # don't wait for the object 588 obj_timeout=1589 for retry in range(0, obj_timeout):590 obj=_internal_get_object_handle(object_list)591 if obj:592 # If object found, return immediately593 return obj594 if obj_timeout <= 1:595 # Don't wait for the object596 break597 time.sleep(1)598 # Force remap599 object_list=self._get_appmap(window_handle,600 ldtp_window_name, True)601 # print(object_list)602 raise LdtpServerException("Unable to find object %s" % obj_name)603 def _populate_appmap(self, obj_dict, obj, parent, child_index):604 index=-1605 if obj:606 if child_index != -1:607 parent=self._insert_obj(obj_dict, obj, parent, child_index)608 try:609 if not obj.AXChildren:610 return611 except atomac._a11y.Error:612 return613 for child in obj.AXChildren:614 index += 1615 if not child:616 continue617 self._populate_appmap(obj_dict, child, parent, index)618 def _get_appmap(self, window_handle, window_name, force_remap=False):619 if not window_handle or not window_name:620 # If invalid argument return empty dict621 return {}622 if not force_remap and self._appmap.has_key(window_name):623 # If available in cache then use that624 # unless remap is forced625 return self._appmap[window_name]626 obj_dict={}627 self._ldtpized_obj_index={}628 # Populate the appmap and cache it629 self._populate_appmap(obj_dict, window_handle, "", -1)630 # Cache the object dictionary631 self._appmap[window_name]=obj_dict632 return obj_dict633 def _get_menu_handle(self, window_name, object_name,634 wait_for_window=True):635 window_handle, name, app=self._get_window_handle(window_name,636 wait_for_window)637 if not window_handle:638 raise LdtpServerException("Unable to find window %s" % window_name)639 # pyatom doesn't understand LDTP convention mnu, strip it off640 menu=re.sub("mnu", "", object_name)641 if re.match("^\d", menu):642 obj_dict=self._get_appmap(window_handle, name)643 return obj_dict[object_name]["obj"]644 menu_handle=app.menuItem(menu)645 if menu_handle:646 return menu_handle647 # Above one looks for menubar item648 # Following looks for menuitem inside the window649 menu_handle_list=window_handle.findAllR(AXRole="AXMenu")650 for menu_handle in menu_handle_list:651 sub_menu_handle=self._get_sub_menu_handle(menu_handle, object_name)652 if sub_menu_handle:653 return sub_menu_handle654 raise LdtpServerException("Unable to find menu %s" % object_name)655 def _get_sub_menu_handle(self, children, menu):656 strip=r"( |:|\.|_|\n)"...
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!!