class Application: def __init__(self, apkName='app-debug', packages=['com.example']): self.manifest = AndroidManifestParser(apkPath='data/apk/', apkName=apkName, packages=packages) self.manifest.get() self.window = Window(self.manifest) # self.manifest def nothing(self): pass def pageMerge(self, pre_page, new_page): pre_page.merge(new_page) produceSpaces(pre_page, pre_page.depth) def out(self, state, pre_page, new_page): print("[backStack]", self.window.pageBackStack) print("[last_page]", pre_page) #print('[last_page] **finished elements**', pre_page.elementsFinshied) print("[new_page]", new_page) print('[result]', state, '\n\n') def startcallback(self, element, page): print("[" + element.getElementType() + "]", element, 'at', page.getPageName()) #print("[with]", page.getElements()) return element.operate() def finishcallback(self, state, pre_page, new_page): self.out(state, pre_page, new_page) if state == LayoutChangeStatus.NEW_LAYOUT: self.run(depth=pre_page.depth, page=new_page) elif state == LayoutChangeStatus.LAYOUT_MERGE: self.pageMerge(pre_page, new_page) elif state == LayoutChangeStatus.PAGE_EXIT: self.window.pageBackStack.pop() elif state == LayoutChangeStatus.APPLICATION_EXIT: self.window.pageBackStack.pop() elif state == LayoutChangeStatus.ERROR: self.nothing() elif state == LayoutChangeStatus.PAGE_EMPTY_EXIT: self.nothing() ## like a dialog disappear, we dont want to close our current activity else: self.nothing() def run(self, depth=0, page=None): new = self.window.createPageWithAppend(depth, page) callDepth = status.TRAVERSALPATH_STRIDE + depth new.depth = callDepth produceSpaces(new, callDepth) new.traversal(self.startcallback, self.finishcallback)
def testPage(): from androidManifestParser import AndroidManifestParser from window import Window apk = 'portal-debug' apk = 'app-debug' packs = ['com.taobao.trip'] packs = ['com.example'] manifest = AndroidManifestParser(apkPath='data/apk/', apkName=apk, packages=packs) manifest.get() window = Window(manifest) p = window.createPageWithAppend() print('[elements]', p.elements) # test parseing print('[pagename]', p.getPageName()) p.drawElements()