コード例 #1
0
ファイル: ViewTree.py プロジェクト: Bludge0n/apk-view-tracer
 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)
コード例 #2
0
    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)
コード例 #3
0
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)
コード例 #4
0
ファイル: ParseView.py プロジェクト: Bludge0n/apk-view-tracer
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)