def setNodeValue(self, node): element = node.mElement if None == element: msg = "Failed to set Node Value because Error in Node!" self.m_logger.error(msg) return False element_parser = ParseElement(node.mElement) element_parser.parseElmentData() node.mClassName = element_parser.getClassName() node.mHashCode = element_parser.getHashCode() node.mId = element_parser.getID() node.mText = element_parser.getText() active_state = ViewState(node) node.mVisible = element_parser.getVisible() node.mClickable = element_parser.getClickable() node.mActive = active_state.getActiveState() node.mRect = element_parser.getRectArea() node.mScrollX = element_parser.scrollX node.mScrollY = element_parser.scrollY node.mAbsoluteRect = self.getAbsoluteRect(node) node.mLocation = self.getViewCenterPoint(node)
class ParseView(): def __init__(self): self.element_parser = ParseElement() #406c1d58 com.android.internal.service.wallpaper.ImageWallpaper #4054bf40 com.android.launcher/com.android.launcher2.Launcher #4073dcd8 com.example.android.apis/com.example.android.apis.ApiDemos #406a7510 TrackingView #405ec120 StatusBarExpanded #40632908 StatusBar #4067b9e8 Keyguard #DONE def isSystemView(self, view_detail): if "com.android.internal.service.wallpaper.ImageWallpaper" == view_detail: return True elif "com.android.launcher/com.android.launcher2.Launcher" == view_detail: return True elif "TrackingView" == view_detail: return True elif "StatusBarExpanded" == view_detail: return True elif "StatusBar" == view_detail: return True elif "Keyguard" == view_detail: return True else: return False def getViewListData(self, view_list_data): viewListHashCode_List = [] viewListHashCode_Dict = {} lines_list = view_list_data.split("\n") if '' in lines_list: lines_list.remove('') if 'DONE' in lines_list: lines_list.remove('DONE') for line in lines_list: temp = line.split(" ") hashcode = temp[0] detail_info = temp[1] # clear the views of android system default services or applications # ImageWallpaper,Launcher,TrackingView,StatusBarExpanded,StatusBar,Keyguard if not self.isSystemView(detail_info): viewListHashCode_List.append(hashcode) viewListHashCode_Dict[hashcode] = detail_info return viewListHashCode_List, viewListHashCode_Dict # parse view data by dump, then get the view text list def getViewTextList(self, view_dump_data): view_text_list = [] element_list = self.element_parser.getStructure(view_dump_data)[0] for element in element_list: text = self.element_parser.getText(element) view_text_list.append(text) return view_text_list def isEqualTextList(self, view_dump_data1, view_dump_data2): text_list1 = self.getViewTextList(view_dump_data1) text_list2 = self.getViewTextList(view_dump_data2) return (text_list1 == text_list2)