2022-08-28 18:56:03 INFO [AppCrawler$.326.addLogFile] ------------------------------------------------- appcrawler v2.7.4 全平台自动遍历测试工具 Q&A: https://ceshiren.com/c/opensource/appcrawler author: 思寒_seveniruby 天马 霍格沃兹测试开发学社 ------------------------------------------------- 2022-08-28 18:56:03 INFO [AppCrawler$.329.addLogFile] result directory = 20220828185603_com.example.android.apis 2022-08-28 18:56:03 DEBUG [AppCrawler$.44.getGlobalEncoding] default Charset=GBK 2022-08-28 18:56:03 DEBUG [AppCrawler$.45.getGlobalEncoding] default file.encoding=GBK 2022-08-28 18:56:03 DEBUG [AppCrawler$.46.getGlobalEncoding] project directory=D:\test_tools 2022-08-28 18:56:03 DEBUG [Crawler.123.start] crawl config 2022-08-28 18:56:03 DEBUG [Crawler.124.start] --- capabilityDescription: "appium的capability通用配置,其中automationName代表自动化的驱动引擎,除了支持appium的\ 所有引擎外,额外增加了adb和selenium的支持" capability: appActivity: ".ApiDemos" appium: "http://127.0.0.1:4723/wd/hub" noReset: "true" dontStopAppOnReset: "false" appPackage: "com.example.android.apis" appAcitity: "com.example.android.apis.ApiDemos" fullReset: "false" waitAppLoadedTimeoutDescription: "隐式等待app加载完成的最大时间 ms" waitAppLoadedTimeout: 10000 waitAppLoadedDescription: "显式等待app加载完成的判断条件" waitAppLoaded: - given: [] when: null then: [] xpath: "//*[contains(@text, 'App')]" action: "" actions: [] times: -1 implicitlyWaitTestCaseDescription: "在测试用例执行阶段隐式等待一个控件出现的最大时间 ms" implicitlyWaitTestCase: 3000 implicitlyWaitCrawlDescription: "在遍历阶段隐式等待一个控件出现的最大时间 ms" implicitlyWaitCrawl: 0 testcaseDescription: "测试用例设置,用于遍历开始之前的一些前置操作,比如自动登录" testcase: name: "AppCrawler TestCase" steps: - given: [] when: null then: [] xpath: "/*/*" action: "Thread.sleep(1000)" actions: [] times: -1 maxTimeDescription: "最大运行时间" maxTime: 10800 maxDepthDescription: "默认的最大深度10, 结合baseUrl可很好的控制遍历的范围" maxDepth: 10 selectedListDescription: "默认遍历列表,只有出现在这个列表里的控件范围才会被遍历" selectedList: - given: [] when: null then: [] xpath: "//*[contains(name(), 'Button')]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(name(), 'Image') and @clickable='true']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@clickable='true']/*[contains(name(), 'Image')]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(name(), 'Image') and @name!='']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(name(), 'Text') and @name!='' and string-length(@label)<10]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//a" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(@class, 'Image') and @clickable='true']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@clickable='true']/*[contains(@class, 'Image')]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@clickable='true' and contains(@class, 'Button')]" action: "" actions: [] times: -1 triggerActionsDescription: "在遍历过程中需要随时处理的一些操作,比如弹框、登录等" triggerActions: - given: [] when: null then: [] xpath: "permission_allow_button" action: "" actions: [] times: 3 - given: [] when: null then: [] xpath: "允许" action: "" actions: [] times: 3 blackListDescription: "黑名单列表 matches风格, 默认排除内容包含2个数字的控件" blackList: - given: [] when: null then: [] xpath: ".*[0-9]{2}.*" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "Get Music" action: "" actions: [] times: -1 firstListDescription: "优先遍历列表,同时出现在selectedList与firstList中的控件会被优先遍历" firstList: [] lastListDescription: "最后遍历列表,同时出现在selectedList与lastList中的控件会被最后遍历" lastList: - given: [] when: null then: [] xpath: "//*[@selected='true']/..//*" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@selected='true']/../..//*" action: "" actions: [] times: -1 backButtonDescription: "后退按钮列表,默认在所有控件遍历完成后,才会最后点击后退按钮。目前具备了自动判断返回按钮的能力,默认不需要配置" backButton: - given: [] when: null then: [] xpath: "Navigate up" action: "" actions: [] times: -1 xpathAttributesDescription: "在生成一个控件的唯一定位符中应该包含的关键属性" xpathAttributes: - "name()" - "name" - "label" - "value" - "resource-id" - "content-desc" - "text" - "id" - "name" - "innerText" - "tag" - "class" sortByAttributeDescription: "陆续根据属性进行遍历排序微调,depth表示从dom中最深层的控件开始遍历,list表示dom中列表优先,\ selected表示菜单最后遍历,这是默认规则,一般不需要改变" sortByAttribute: - "depth" - "list" - "selected" findByDescription: "默认生成控件唯一定位符的表达式风格,可选项 default|android|id|xpath,默认会自动判断是否使用android定\ 位或者ios定位" findBy: "xpath" baseUrlDescription: "设置一个起始点,从这个起始点开始计算深度,比如默认从登录后的界面开始计算" baseUrl: [] appWhiteListDescription: "app白名单,允许在这些app里进行遍历" appWhiteList: [] urlBlackListDescription: "url黑名单,用于排除某些页面的遍历" urlBlackList: [] urlWhiteListDescription: "url白名单,仅在这些界面内遍历" urlWhiteList: [] beforeRestartDescription: "在重启session之前做的事情" beforeRestart: [] beforeElementDescription: "在遍历每个控件之前默认执行的动作" beforeElement: [] afterElementDescription: "在遍历每个控件之后默认执行的动作" afterElement: [] afterElementWaitDescription: "在遍历每个控件之后默认等待的时间,用于等待新页面加载" afterElementWait: 1000 afterAllDescription: "在遍历完当前页面内的所有控件后,是否需要刷新或者滑动" afterAll: [] afterAllMaxDescription: "afterAll的最大重试次数,比如连续滑动2次都没新元素即取消" afterAllMax: 2 tagLimitMaxDescription: "相似控件最多点击几次" tagLimitMax: 20 tagAttributesDescription: "用于判断是否是相似控件的关键属性,祖先节点具备相同的属性认为是相似" tagAttributes: - "name()" - "name" - "label" - "resource-id" - "content-desc" - "id" - "name" - "tag" - "class" tagLimitDescription: "设置部分相似控件的最大遍历次数" tagLimit: - given: [] when: null then: [] xpath: "确定" action: "" actions: [] times: 1000 - given: [] when: null then: [] xpath: "取消" action: "" actions: [] times: 1000 - given: [] when: null then: [] xpath: "share_comment_guide_btn_name" action: "" actions: [] times: 1000 - given: [] when: null then: [] xpath: "//*[contains(@class, 'List')]//*" action: "" actions: [] times: 2 assertGlobalDescription: "全局断言" assertGlobal: [] suiteNameDescription: "报告中的测试套件名字可以由列表内的控件内容替换,增强报告中关键界面的辨识度" suiteName: - "//*[@selected='true']//android.widget.TextView/@text" screenshotDescription: "是否截图" screenshot: true reportTitleDescription: "报告的title" reportTitle: "AppCrawler" resultDirDescription: "结果目录,如果为空会自动创建对应时间戳_报名的结果目录" resultDir: "20220828185603_com.example.android.apis" showCancelDescription: "是否展示跳过的控件记录" showCancel: true pluginListDescription: "插件列表,暂时禁用,太高级了,很多人不会用" Description: "。在selectedList firstList lastList等很多配置中,需要填充的是测试步骤Step类型。Step类型由given(\ 满足条件)when(条件满足的行为)then(断言)三部分组成。Step可以简化为xpath(定位表达式,支持xpath 正则 包含关系)与action(点击\ \ 输入等行为)。" pluginList: [] 2022-08-28 18:56:03 INFO [Crawler.126.start] set xpath attribute with List(name(), name, label, value, resource-id, content-desc, text, id, name, innerText, tag, class) 2022-08-28 18:56:03 INFO [Crawler.130.start] set tag attribute with List(name(), name, label, resource-id, content-desc, id, name, tag, class) 2022-08-28 18:56:03 INFO [Crawler.100.$anonfun$loadPlugins$3] com.ceshiren.appcrawler.plugin.TagLimitPlugin@40499e4f 2022-08-28 18:56:03 INFO [Crawler.100.$anonfun$loadPlugins$3] com.ceshiren.appcrawler.plugin.ReportPlugin@51cd7ffc 2022-08-28 18:56:03 INFO [Crawler.100.$anonfun$loadPlugins$3] com.ceshiren.appcrawler.plugin.FreeMind@30d4b288 2022-08-28 18:56:03 INFO [Plugin.22.init] com.ceshiren.appcrawler.plugin.TagLimitPlugin init 2022-08-28 18:56:03 INFO [Plugin.22.init] com.ceshiren.appcrawler.plugin.ReportPlugin init 2022-08-28 18:56:03 INFO [Plugin.22.init] com.ceshiren.appcrawler.plugin.FreeMind init 2022-08-28 18:56:03 INFO [ReportFactory$.33.initReportPath] reportPath=D:\test_tools\AppCrawler\20220828185603_com.example.android.apis 2022-08-28 18:56:03 INFO [ReportFactory$.35.initReportPath] testcaseDir=D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:03 INFO [ReportFactory$.38.initReportPath] create D:\test_tools\AppCrawler\20220828185603_com.example.android.apis\tmp directory 2022-08-28 18:56:03 INFO [Crawler.137.start] prepare setup Appium 2022-08-28 18:56:03 INFO [Crawler.299.setupCrawler] afterAllMax=2 2022-08-28 18:56:04 INFO [Crawler.308.setupDriver] 2022-08-28 18:56:04 INFO [Crawler.344.setupDriver] use AppiumClient 2022-08-28 18:56:04 INFO [AppiumClient.45.] Capabilities {app: , appAcitity: com.example.android.apis.Ap..., appActivity: .ApiDemos, appPackage: com.example.android.apis, appium: http://127.0.0.1:4723/wd/hub, deviceName: demo, dontStopAppOnReset: false, fullReset: false, newCommandTimeout: 120, noReset: true} 2022-08-28 18:56:08 INFO [SeleniumDriver.58.getDeviceInfo] screenWidth=1080 screenHeight=1794 2022-08-28 18:56:08 INFO [AppiumClient.76.] capture dir = D:\test_tools\AppCrawler\. 2022-08-28 18:56:08 INFO [Crawler.349.setupDriver] com.ceshiren.appcrawler.driver.AppiumClient@14a049f9 2022-08-28 18:56:08 DEBUG [DynamicEval$.113.load] first import 2022-08-28 18:56:10 INFO [Crawler.148.start] platformName= driver=com.ceshiren.appcrawler.driver.AppiumClient@14a049f9 2022-08-28 18:56:10 INFO [Crawler.149.start] ------------------------------------------------- appcrawler v2.7.4 全平台自动遍历测试工具 Q&A: https://ceshiren.com/c/opensource/appcrawler author: 思寒_seveniruby 天马 霍格沃兹测试开发学社 ------------------------------------------------- 2022-08-28 18:56:10 INFO [Crawler.179.waitAppLoaded] start wait app loaded timeout = 10000 2022-08-28 18:56:11 INFO [Crawler.185.$anonfun$waitAppLoaded$1] wait for app loaded 2022-08-28 18:56:11 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:11 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:11 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:11 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:11 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:11 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:11 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:11 INFO [DataRecord.25.isDiff] just only record return false 2022-08-28 18:56:11 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with //*[contains(@text, 'App')] 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.197.$anonfun$waitAppLoaded$1] app loaded 2022-08-28 18:56:11 INFO [LogicUtils$.83.asyncTask] use time 1.19 seconds name=waitAppLoaded result=success 2022-08-28 18:56:11 INFO [Crawler.199.waitAppLoaded] wait finish 2022-08-28 18:56:11 INFO [Crawler.152.start] driver=null 2022-08-28 18:56:11 INFO [Crawler.153.start] get screen info 2022-08-28 18:56:11 INFO [SeleniumDriver.58.getDeviceInfo] screenWidth=1080 screenHeight=1794 2022-08-28 18:56:11 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:11 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:11 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:11 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:11 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:11 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:11 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:11 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:11 INFO [Crawler.257.firstRefresh] first refresh 2022-08-28 18:56:11 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:11 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:11 INFO [Crawler.756.beforeElementAction] com.example.android.apis.ApiDemos.tag=Start.depth=2.id=Start.name=Start 2022-08-28 18:56:11 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:11 INFO [Crawler.1043.doElementAction] current index = 0 2022-08-28 18:56:11 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:11 INFO [Crawler.1045.doElementAction] current action = _Start 2022-08-28 18:56:11 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.ApiDemos.tag=Start.depth=2.id=Start.name=Start 2022-08-28 18:56:11 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.ApiDemos 2022-08-28 18:56:11 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:11 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.ApiDemos.tag=Start.depth=2.id=Start.name=Start 2022-08-28 18:56:11 INFO [URIElementStore.67.saveReqHash] save reqHash to 0 2022-08-28 18:56:11 INFO [URIElementStore.83.saveReqDom] save reqDom to 0 2022-08-28 18:56:11 INFO [Crawler.1059.doElementAction] just log 2022-08-28 18:56:11 INFO [Crawler.1060.doElementAction] { "url" : "com.example.android.apis.ApiDemos", "tag" : "Start", "className" : "android.widget.FrameLayout", "id" : "Start", "name" : "Start", "text" : "", "instance" : "", "depth" : "2", "latest" : "0", "valid" : "true", "selected" : "false", "xpath" : "//android.widget.FrameLayout[@class='android.widget.FrameLayout']", "ancestor" : "//android.widget.FrameLayout[@class='android.widget.FrameLayout']", "x" : 0, "y" : 0, "width" : 1080, "height" : 1794, "action" : "_Start" } 2022-08-28 18:56:11 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:11 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:12 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:12 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:12 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:13 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:13 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:13 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:13 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:13 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:13 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:13 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:13 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:13 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:13 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:13 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:13 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:13 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:13 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:13 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:13 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:13 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:13 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/0_com.example.android.apis.ApiDemos.tag=Start.depth=2.id=Start.name=Start.clicked.xml 2022-08-28 18:56:13 INFO [URIElementStore.75.saveResHash] save resHash to 0 2022-08-28 18:56:13 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/0_com.example.android.apis.ApiDemos.tag=Start.depth=2.id=Start.name=Start.clicked.png to 0 2022-08-28 18:56:13 INFO [URIElementStore.90.saveResDom] save resDom to 0 2022-08-28 18:56:13 INFO [Crawler.160.start] append current app name to appWhiteList 2022-08-28 18:56:13 INFO [Crawler.164.start] run steps 2022-08-28 18:56:13 INFO [Crawler.286.runSteps] run testcases 2022-08-28 18:56:13 INFO [AutomationSuite.16.beforeAll] beforeAll 2022-08-28 18:56:13 INFO [AutomationSuite.24.$anonfun$new$1] testcase start 2022-08-28 18:56:13 INFO [AutomationSuite.31.$anonfun$new$2] --- given: [] when: null then: [] xpath: "/*/*" action: "Thread.sleep(1000)" actions: [] times: -1 2022-08-28 18:56:13 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:13 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:13 DEBUG [AutomationSuite.37.$anonfun$new$2] HashMap(long-clickable -> false, ancestor -> //android.widget.FrameLayout[@class='android.widget.FrameLayout'], bounds -> [0,0][1080,1794], name() -> android.widget.FrameLayout, innerText -> , xpath -> //android.widget.FrameLayout[@class='android.widget.FrameLayout'], valid -> true, width -> 1080, value -> , x -> 0, package -> com.example.android.apis, name -> , clickable -> false, checked -> false, y -> 0, enabled -> true, label -> , checkable -> false, focusable -> false, height -> 1794, displayed -> true, focused -> false, selected -> false, text -> , class -> android.widget.FrameLayout, scrollable -> false, depth -> 2, index -> 0, password -> false) 2022-08-28 18:56:13 DEBUG [AutomationSuite.40.$anonfun$new$2] Steps.tag=FrameLayout.depth=2 2022-08-28 18:56:13 INFO [Crawler.756.beforeElementAction] Steps.tag=FrameLayout.depth=2 2022-08-28 18:56:13 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:13 INFO [Crawler.1043.doElementAction] current index = 1 2022-08-28 18:56:13 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:13 INFO [Crawler.1045.doElementAction] current action = Thread.sleep(1000) 2022-08-28 18:56:13 INFO [Crawler.1046.doElementAction] current element = Steps.tag=FrameLayout.depth=2 2022-08-28 18:56:13 INFO [Crawler.1047.doElementAction] current url = Steps 2022-08-28 18:56:13 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:13 INFO [Crawler.1049.doElementAction] current file name = Steps.tag=FrameLayout.depth=2 2022-08-28 18:56:13 INFO [URIElementStore.67.saveReqHash] save reqHash to 1 2022-08-28 18:56:13 INFO [URIElementStore.83.saveReqDom] save reqDom to 1 2022-08-28 18:56:13 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.click.png to 1 2022-08-28 18:56:13 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.click.png 2022-08-28 18:56:13 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.click.png 2022-08-28 18:56:13 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.click.png 2022-08-28 18:56:13 INFO [Crawler.1108.doElementAction] need input Thread.sleep(1000) 2022-08-28 18:56:13 INFO [ReactWebDriver.36.findElement] find by uri element= Steps.tag=FrameLayout.depth=2 2022-08-28 18:56:13 INFO [AppiumClient.190.findElements] findElementsByXPath //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:13 INFO [ReactWebDriver.43.findElement] find by xpath success 2022-08-28 18:56:13 INFO [DynamicEval$.70.dsl] eval Thread.sleep(1000) 2022-08-28 18:56:13 INFO [DynamicEval$.97.eval] Thread.sleep(1000) 2022-08-28 18:56:14 INFO [DynamicEval$.98.eval] Success 2022-08-28 18:56:14 INFO [DynamicEval$.99.eval] eval finish 2022-08-28 18:56:14 INFO [DynamicEval$.72.dsl] () 2022-08-28 18:56:14 INFO [LogicUtils$.83.asyncTask] use time 1.1 seconds name=action result=success 2022-08-28 18:56:14 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:14 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:15 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:15 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:15 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:16 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:16 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:16 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:16 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:16 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:16 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:16 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:16 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:16 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:16 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.clicked.xml 2022-08-28 18:56:16 INFO [URIElementStore.75.saveResHash] save resHash to 1 2022-08-28 18:56:16 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/1_Steps.tag=FrameLayout.depth=2.clicked.png to 1 2022-08-28 18:56:16 INFO [URIElementStore.90.saveResDom] save resDom to 1 2022-08-28 18:56:16 TRACE [TagLimitPlugin.67.afterElementAction] not contains 2022-08-28 18:56:16 INFO [AutomationSuite.77.$anonfun$new$1] finish run steps 2022-08-28 18:56:16 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:16 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:16 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:16 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:16 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:16 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:16 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:16 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:16 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:16 INFO [Crawler.1304.handleCtrlC] add shutdown hook 2022-08-28 18:56:16 INFO [Crawler.945.crawl] crawl use 12917 ms 2022-08-28 18:56:16 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:16 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:16 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 13 with //*[not(*)] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 13 2022-08-28 18:56:16 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:16 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:16 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:16 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:16 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:16 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:16 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:16 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:16 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:16 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:16 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=10 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:16 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:16 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=10 2022-08-28 18:56:16 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 TRACE [Crawler.630.getAvailableElement] sorted nodes length=10 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:16 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:16 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation) 2022-08-28 18:56:16 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),确定,null,List(),1000) 2022-08-28 18:56:16 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:16 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),取消,null,List(),1000) 2022-08-28 18:56:16 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:16 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),share_comment_guide_btn_name,null,List(),1000) 2022-08-28 18:56:16 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:16 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),//*[contains(@class, 'List')]//*,null,List(),2) 2022-08-28 18:56:16 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 12 with //*[contains(@class, 'List')]//* 2022-08-28 18:56:16 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 12 2022-08-28 18:56:16 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 12 2022-08-28 18:56:16 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 DEBUG [TagLimitPlugin.82.$anonfun$getTimesFromTagLimit$1] //*[contains(@class, 'List')]//* hit 2022-08-28 18:56:16 INFO [TagLimitPlugin.42.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=2 with conf.tagLimit 2022-08-28 18:56:16 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=2 2022-08-28 18:56:16 INFO [Crawler.756.beforeElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:16 INFO [Crawler.1043.doElementAction] current index = 2 2022-08-28 18:56:16 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Animation' and @class='android.widget.TextView'] 2022-08-28 18:56:16 INFO [Crawler.1045.doElementAction] current action = click 2022-08-28 18:56:16 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.ApiDemos 2022-08-28 18:56:16 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView'] 2022-08-28 18:56:16 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 INFO [URIElementStore.67.saveReqHash] save reqHash to 2 2022-08-28 18:56:16 INFO [URIElementStore.83.saveReqDom] save reqDom to 2 2022-08-28 18:56:16 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.click.png to 2 2022-08-28 18:56:16 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.click.png 2022-08-28 18:56:16 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.click.png 2022-08-28 18:56:16 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.click.png 2022-08-28 18:56:16 INFO [Crawler.1108.doElementAction] need input click 2022-08-28 18:56:16 INFO [ReactWebDriver.36.findElement] find by uri element= com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:16 INFO [AppiumClient.190.findElements] findElementsByXPath //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Animation' and @class='android.widget.TextView'] 2022-08-28 18:56:16 INFO [ReactWebDriver.43.findElement] find by xpath success 2022-08-28 18:56:16 INFO [Crawler.1127.$anonfun$doElementAction$3] click element 2022-08-28 18:56:17 INFO [LogicUtils$.83.asyncTask] use time 0.829 seconds name=action result=success 2022-08-28 18:56:17 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:17 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:18 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:18 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:18 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:18 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:18 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:18 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:18 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:18 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:18 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:18 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:18 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:18 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:18 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:18 INFO [Crawler.742.parsePageContext] currentContentHash=ebf4dd9088eb4e37fcb9661400fabf3e lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:18 INFO [Crawler.744.parsePageContext] ui change 2022-08-28 18:56:18 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.clicked.xml 2022-08-28 18:56:18 INFO [URIElementStore.75.saveResHash] save resHash to 2 2022-08-28 18:56:18 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/2_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation.clicked.png to 2 2022-08-28 18:56:18 INFO [URIElementStore.90.saveResDom] save resDom to 2 2022-08-28 18:56:18 INFO [TagLimitPlugin.65.afterElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=1 2022-08-28 18:56:18 INFO [Crawler.945.crawl] crawl use 2454 ms 2022-08-28 18:56:18 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:18 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:18 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 14 with //*[not(*)] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 14 2022-08-28 18:56:18 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:18 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:18 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:18 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:18 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:18 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:18 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:18 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:18 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:18 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:18 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:18 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=5 2022-08-28 18:56:18 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:18 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:18 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=5 2022-08-28 18:56:18 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:18 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:18 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 TRACE [Crawler.630.getAvailableElement] sorted nodes length=5 2022-08-28 18:56:18 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:18 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:18 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:18 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:18 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning) 2022-08-28 18:56:18 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=1 2022-08-28 18:56:18 INFO [Crawler.756.beforeElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:18 INFO [Crawler.1043.doElementAction] current index = 3 2022-08-28 18:56:18 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Cloning' and @class='android.widget.TextView'] 2022-08-28 18:56:18 INFO [Crawler.1045.doElementAction] current action = click 2022-08-28 18:56:18 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.ApiDemos 2022-08-28 18:56:18 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView'] 2022-08-28 18:56:18 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 INFO [URIElementStore.67.saveReqHash] save reqHash to 3 2022-08-28 18:56:18 INFO [URIElementStore.83.saveReqDom] save reqDom to 3 2022-08-28 18:56:18 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.click.png to 3 2022-08-28 18:56:18 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.click.png 2022-08-28 18:56:18 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.click.png 2022-08-28 18:56:18 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.click.png 2022-08-28 18:56:18 INFO [Crawler.1108.doElementAction] need input click 2022-08-28 18:56:18 INFO [ReactWebDriver.36.findElement] find by uri element= com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:18 INFO [AppiumClient.190.findElements] findElementsByXPath //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Cloning' and @class='android.widget.TextView'] 2022-08-28 18:56:18 INFO [ReactWebDriver.43.findElement] find by xpath success 2022-08-28 18:56:18 INFO [Crawler.1127.$anonfun$doElementAction$3] click element 2022-08-28 18:56:19 INFO [LogicUtils$.83.asyncTask] use time 0.788 seconds name=action result=success 2022-08-28 18:56:19 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:19 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:20 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:20 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:20 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:21 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:21 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:21 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:21 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:21 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:21 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:21 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:21 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:21 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.AnimationCloning 2022-08-28 18:56:21 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.AnimationCloning, com.example.android.apis.ApiDemos) 2022-08-28 18:56:21 INFO [Crawler.742.parsePageContext] currentContentHash=012e9d89f052915703f873382ca69d43 lastContentHash=ebf4dd9088eb4e37fcb9661400fabf3e 2022-08-28 18:56:21 INFO [Crawler.744.parsePageContext] ui change 2022-08-28 18:56:21 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.clicked.xml 2022-08-28 18:56:21 INFO [URIElementStore.75.saveResHash] save resHash to 3 2022-08-28 18:56:21 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/3_com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning.clicked.png to 3 2022-08-28 18:56:21 INFO [URIElementStore.90.saveResDom] save resDom to 3 2022-08-28 18:56:21 INFO [TagLimitPlugin.65.afterElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:21 INFO [Crawler.945.crawl] crawl use 2382 ms 2022-08-28 18:56:21 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:21 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:21 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 3 with //*[not(*)] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 3 2022-08-28 18:56:21 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:21 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:21 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:21 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:21 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:21 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.AnimationCloning, com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with //*[contains(name(), 'Button')] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:21 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:21 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [Crawler.517.getAvailableElement] selected nodes size = 1 2022-08-28 18:56:21 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:21 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:21 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 1 2022-08-28 18:56:21 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=1 2022-08-28 18:56:21 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run first show, need click 2022-08-28 18:56:21 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=1 2022-08-28 18:56:21 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run first show, need click 2022-08-28 18:56:21 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=1 2022-08-28 18:56:21 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:21 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=false com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:21 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=false com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:21 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=false com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [Crawler.630.getAvailableElement] sorted nodes length=1 2022-08-28 18:56:21 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=false com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run) 2022-08-28 18:56:21 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),确定,null,List(),1000) 2022-08-28 18:56:21 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:21 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),取消,null,List(),1000) 2022-08-28 18:56:21 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:21 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),share_comment_guide_btn_name,null,List(),1000) 2022-08-28 18:56:21 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:21 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),//*[contains(@class, 'List')]//*,null,List(),2) 2022-08-28 18:56:21 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'List')]//* 2022-08-28 18:56:21 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:21 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0 2022-08-28 18:56:21 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.AnimationCloning//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @class='android.widget.Button']]=20 2022-08-28 18:56:21 INFO [Crawler.756.beforeElementAction] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:21 INFO [Crawler.1043.doElementAction] current index = 4 2022-08-28 18:56:21 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @text='Run' and @class='android.widget.Button'] 2022-08-28 18:56:21 INFO [Crawler.1045.doElementAction] current action = click 2022-08-28 18:56:21 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.AnimationCloning 2022-08-28 18:56:21 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @class='android.widget.Button'] 2022-08-28 18:56:21 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [URIElementStore.67.saveReqHash] save reqHash to 4 2022-08-28 18:56:21 INFO [URIElementStore.83.saveReqDom] save reqDom to 4 2022-08-28 18:56:21 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.click.png to 4 2022-08-28 18:56:21 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.click.png 2022-08-28 18:56:21 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.click.png 2022-08-28 18:56:21 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.click.png 2022-08-28 18:56:21 INFO [Crawler.1108.doElementAction] need input click 2022-08-28 18:56:21 INFO [ReactWebDriver.36.findElement] find by uri element= com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:21 INFO [AppiumClient.190.findElements] findElementsByXPath //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @text='Run' and @class='android.widget.Button'] 2022-08-28 18:56:21 INFO [ReactWebDriver.43.findElement] find by xpath success 2022-08-28 18:56:21 INFO [Crawler.1127.$anonfun$doElementAction$3] click element 2022-08-28 18:56:21 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:21 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:22 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:22 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:22 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:22 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:22 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:22 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:22 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:22 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:22 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.AnimationCloning 2022-08-28 18:56:22 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.AnimationCloning, com.example.android.apis.ApiDemos) 2022-08-28 18:56:22 INFO [Crawler.742.parsePageContext] currentContentHash=012e9d89f052915703f873382ca69d43 lastContentHash=012e9d89f052915703f873382ca69d43 2022-08-28 18:56:22 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:22 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.clicked.xml 2022-08-28 18:56:22 INFO [URIElementStore.75.saveResHash] save resHash to 4 2022-08-28 18:56:22 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/4_com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run.clicked.png to 4 2022-08-28 18:56:22 INFO [URIElementStore.90.saveResDom] save resDom to 4 2022-08-28 18:56:22 INFO [TagLimitPlugin.65.afterElementAction] tagLimit[com.example.android.apis.AnimationCloning//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @class='android.widget.Button']]=19 2022-08-28 18:56:22 INFO [ReportPlugin.46.needReport] read command from D:\test_tools\AppCrawler\20220828185603_com.example.android.apis\request 2022-08-28 18:56:22 INFO [ReportPlugin.52.needReport] 2022-08-28 18:56:22 INFO [Crawler.945.crawl] crawl use 1621 ms 2022-08-28 18:56:22 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:22 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:22 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 3 with //*[not(*)] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 3 2022-08-28 18:56:22 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:22 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:22 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:22 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:22 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:22 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.AnimationCloning, com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with //*[contains(name(), 'Button')] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.AnimationCloning.tag=Button.depth=6.id=startButton.text=Run 2022-08-28 18:56:22 INFO [Crawler.517.getAvailableElement] selected nodes size = 1 2022-08-28 18:56:22 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:22 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:22 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 1 2022-08-28 18:56:22 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=1 2022-08-28 18:56:22 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=0 2022-08-28 18:56:22 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=0 2022-08-28 18:56:22 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:22 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:22 TRACE [Crawler.630.getAvailableElement] sorted nodes length=0 2022-08-28 18:56:22 INFO [Crawler.638.getAvailableElement] next element None 2022-08-28 18:56:22 INFO [Crawler.995.crawl] com.example.android.apis.AnimationCloning all elements had be clicked 2022-08-28 18:56:22 INFO [Crawler.880.getBackButton] go back 2022-08-28 18:56:22 TRACE [Crawler.882.getBackButton] ListBuffer(Step(List(),null,List(),Navigate up,null,List(),-1)) 2022-08-28 18:56:22 INFO [Crawler.907.getBackButton] can't find backButton button from config 2022-08-28 18:56:22 INFO [Crawler.908.getBackButton] find backButton from history 2022-08-28 18:56:22 INFO [Crawler.922.getBackButton] can't find backButton from history 2022-08-28 18:56:22 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:22 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:22 INFO [Crawler.756.beforeElementAction] com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:22 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:22 INFO [Crawler.1043.doElementAction] current index = 5 2022-08-28 18:56:22 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:22 INFO [Crawler.1045.doElementAction] current action = _Back 2022-08-28 18:56:22 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:22 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.AnimationCloning 2022-08-28 18:56:22 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:22 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:22 INFO [URIElementStore.67.saveReqHash] save reqHash to 5 2022-08-28 18:56:22 INFO [URIElementStore.83.saveReqDom] save reqDom to 5 2022-08-28 18:56:22 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.click.png to 5 2022-08-28 18:56:22 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:22 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:22 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:22 INFO [Crawler.1063.doElementAction] back 2022-08-28 18:56:22 WARN [Crawler.1247.back] two back action too close 2022-08-28 18:56:24 INFO [Crawler.1251.$anonfun$back$2] navigate back 2022-08-28 18:56:25 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:25 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:26 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:26 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:26 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:26 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:26 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:26 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:26 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:26 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:26 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:26 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:26 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:26 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:26 DEBUG [Crawler.719.parsePageContext] pop urlStack 2022-08-28 18:56:26 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:26 INFO [Crawler.742.parsePageContext] currentContentHash=ebf4dd9088eb4e37fcb9661400fabf3e lastContentHash=012e9d89f052915703f873382ca69d43 2022-08-28 18:56:26 INFO [Crawler.744.parsePageContext] ui change 2022-08-28 18:56:26 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.clicked.xml 2022-08-28 18:56:26 INFO [URIElementStore.75.saveResHash] save resHash to 5 2022-08-28 18:56:26 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/5_com.example.android.apis.AnimationCloning.tag=Back.depth=2.id=Back.name=Back.clicked.png to 5 2022-08-28 18:56:26 INFO [URIElementStore.90.saveResDom] save resDom to 5 2022-08-28 18:56:26 INFO [Crawler.945.crawl] crawl use 4029 ms 2022-08-28 18:56:26 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:26 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 14 with //*[not(*)] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 14 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:26 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:26 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:26 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:26 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=4 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:26 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=4 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.630.getAvailableElement] sorted nodes length=4 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events) 2022-08-28 18:56:26 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:26 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events need skip 2022-08-28 18:56:26 INFO [Crawler.945.crawl] crawl use 29 ms 2022-08-28 18:56:26 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:26 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:26 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:26 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:26 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:26 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=4 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing first show, need click 2022-08-28 18:56:26 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking first show, need click 2022-08-28 18:56:26 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=3 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.630.getAvailableElement] sorted nodes length=3 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading) 2022-08-28 18:56:26 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:26 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading need skip 2022-08-28 18:56:26 INFO [Crawler.945.crawl] crawl use 13 ms 2022-08-28 18:56:26 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:26 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:26 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:26 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:26 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:26 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=4 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=2 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.630.getAvailableElement] sorted nodes length=2 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing) 2022-08-28 18:56:26 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:26 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing need skip 2022-08-28 18:56:26 INFO [Crawler.945.crawl] crawl use 12 ms 2022-08-28 18:56:26 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:26 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:26 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:26 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:26 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:26 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=4 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=1 2022-08-28 18:56:26 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.630.getAvailableElement] sorted nodes length=1 2022-08-28 18:56:26 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking) 2022-08-28 18:56:26 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:26 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking need skip 2022-08-28 18:56:26 INFO [Crawler.945.crawl] crawl use 12 ms 2022-08-28 18:56:26 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:26 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:26 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:26 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:26 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:26 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 5 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 5 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Cloning 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 INFO [Crawler.517.getAvailableElement] selected nodes size = 5 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:26 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:26 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 5 2022-08-28 18:56:26 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=5 2022-08-28 18:56:26 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=4 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Events 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Loading 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Reversing 2022-08-28 18:56:26 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Seeking 2022-08-28 18:56:26 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:26 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:26 TRACE [Crawler.630.getAvailableElement] sorted nodes length=0 2022-08-28 18:56:26 INFO [Crawler.638.getAvailableElement] next element None 2022-08-28 18:56:26 INFO [Crawler.995.crawl] com.example.android.apis.ApiDemos all elements had be clicked 2022-08-28 18:56:26 INFO [Crawler.880.getBackButton] go back 2022-08-28 18:56:26 TRACE [Crawler.882.getBackButton] ListBuffer(Step(List(),null,List(),Navigate up,null,List(),-1)) 2022-08-28 18:56:26 INFO [Crawler.907.getBackButton] can't find backButton button from config 2022-08-28 18:56:26 INFO [Crawler.908.getBackButton] find backButton from history 2022-08-28 18:56:26 INFO [Crawler.922.getBackButton] can't find backButton from history 2022-08-28 18:56:26 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:26 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:26 INFO [Crawler.756.beforeElementAction] com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:26 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:26 INFO [Crawler.1043.doElementAction] current index = 6 2022-08-28 18:56:26 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:26 INFO [Crawler.1045.doElementAction] current action = _Back 2022-08-28 18:56:26 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:26 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.ApiDemos 2022-08-28 18:56:26 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:26 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:26 INFO [URIElementStore.67.saveReqHash] save reqHash to 6 2022-08-28 18:56:26 INFO [URIElementStore.83.saveReqDom] save reqDom to 6 2022-08-28 18:56:26 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png to 6 2022-08-28 18:56:26 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:26 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:26 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:26 INFO [Crawler.1063.doElementAction] back 2022-08-28 18:56:26 WARN [Crawler.1247.back] two back action too close 2022-08-28 18:56:28 INFO [Crawler.1251.$anonfun$back$2] navigate back 2022-08-28 18:56:29 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:29 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:30 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:30 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:30 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:30 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:30 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:30 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:30 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:30 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:30 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:30 INFO [Crawler.711.parsePageContext] appName = com.example.android.apis 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:30 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:30 INFO [Crawler.715.parsePageContext] url=com.example.android.apis.ApiDemos 2022-08-28 18:56:30 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.example.android.apis.ApiDemos) 2022-08-28 18:56:30 INFO [Crawler.742.parsePageContext] currentContentHash=c8d1b4ac996b007272986055a24f70ae lastContentHash=ebf4dd9088eb4e37fcb9661400fabf3e 2022-08-28 18:56:30 INFO [Crawler.744.parsePageContext] ui change 2022-08-28 18:56:30 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.clicked.xml 2022-08-28 18:56:30 INFO [URIElementStore.75.saveResHash] save resHash to 6 2022-08-28 18:56:30 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/6_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.clicked.png to 6 2022-08-28 18:56:30 INFO [URIElementStore.90.saveResDom] save resDom to 6 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 4011 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 13 with //*[not(*)] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 13 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=9 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=9 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 15 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.122.isClicked] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security first show, need click 2022-08-28 18:56:30 DEBUG [URIElementStore.131.isSkipped] element=com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views first show, need click 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=8 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=8 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 14 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=7 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=7 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 15 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=6 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=6 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 13 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=5 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=5 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 13 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=4 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=4 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 14 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=3 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=3 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 13 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=2 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=2 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 12 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=1 2022-08-28 18:56:30 TRACE [Crawler.591.$anonfun$getAvailableElement$20] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=1 2022-08-28 18:56:30 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=6 selected=false list=true com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element Some(com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views) 2022-08-28 18:56:30 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[com.example.android.apis.ApiDemos//android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @class='android.widget.TextView']]=0 2022-08-28 18:56:30 INFO [TagLimitPlugin.53.fixElementAction] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views need skip 2022-08-28 18:56:30 INFO [Crawler.945.crawl] crawl use 13 ms 2022-08-28 18:56:30 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:30 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:30 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:30 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:30 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis) 2022-08-28 18:56:30 DEBUG [Crawler.444.needBackToPage] urlStack=Stack(com.example.android.apis.ApiDemos) baseUrl=List() maxDepth=10 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(name(), 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(name(), 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Image') and @name!=''] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //a 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //a 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 10 with //*[contains(@class, 'Text') and @clickable='true' and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 10 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Animation 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.512.$anonfun$getAvailableElement$3] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']//*[contains(@class, 'Text') and string-length(@text)<10] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[contains(@class, 'Image') and @clickable='true'] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true']/*[contains(@class, 'Image')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@clickable='true' and contains(@class, 'Button')] 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 INFO [Crawler.517.getAvailableElement] selected nodes size = 10 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .*[0-9]{2}.* 2022-08-28 18:56:30 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music 2022-08-28 18:56:30 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 10 2022-08-28 18:56:30 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=10 2022-08-28 18:56:30 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=9 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=App 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Graphics 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Hardware 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Media 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=NFC 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=OS 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Security 2022-08-28 18:56:30 TRACE [Crawler.583.$anonfun$getAvailableElement$18] com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Views 2022-08-28 18:56:30 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //*[@selected='true']/../..//* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list 2022-08-28 18:56:30 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected 2022-08-28 18:56:30 TRACE [Crawler.630.getAvailableElement] sorted nodes length=0 2022-08-28 18:56:30 INFO [Crawler.638.getAvailableElement] next element None 2022-08-28 18:56:30 INFO [Crawler.995.crawl] com.example.android.apis.ApiDemos all elements had be clicked 2022-08-28 18:56:30 INFO [Crawler.880.getBackButton] go back 2022-08-28 18:56:30 TRACE [Crawler.882.getBackButton] ListBuffer(Step(List(),null,List(),Navigate up,null,List(),-1)) 2022-08-28 18:56:30 INFO [Crawler.907.getBackButton] can't find backButton button from config 2022-08-28 18:56:30 INFO [Crawler.908.getBackButton] find backButton from history 2022-08-28 18:56:30 INFO [Crawler.922.getBackButton] can't find backButton from history 2022-08-28 18:56:30 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:30 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:30 INFO [Crawler.756.beforeElementAction] com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:30 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:30 INFO [Crawler.1043.doElementAction] current index = 7 2022-08-28 18:56:30 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:30 INFO [Crawler.1045.doElementAction] current action = _Back 2022-08-28 18:56:30 INFO [Crawler.1046.doElementAction] current element = com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:30 INFO [Crawler.1047.doElementAction] current url = com.example.android.apis.ApiDemos 2022-08-28 18:56:30 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:30 INFO [Crawler.1049.doElementAction] current file name = com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back 2022-08-28 18:56:30 INFO [URIElementStore.83.saveReqDom] save reqDom to 7 2022-08-28 18:56:30 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/7_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:30 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/7_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:30 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/7_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.click.png 2022-08-28 18:56:31 INFO [Crawler.1063.doElementAction] back 2022-08-28 18:56:31 INFO [Crawler.1251.$anonfun$back$2] navigate back 2022-08-28 18:56:31 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:31 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:32 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:32 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:32 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:32 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:32 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:32 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:32 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:32 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:32 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:32 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:32 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:32 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:32 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:32 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:32 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:32 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:32 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:32 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:32 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c8d1b4ac996b007272986055a24f70ae 2022-08-28 18:56:32 INFO [Crawler.744.parsePageContext] ui change 2022-08-28 18:56:32 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/7_com.example.android.apis.ApiDemos.tag=Back.depth=2.id=Back.name=Back.clicked.xml 2022-08-28 18:56:32 INFO [URIElementStore.90.saveResDom] save resDom to 7 2022-08-28 18:56:32 INFO [Crawler.945.crawl] crawl use 1863 ms 2022-08-28 18:56:32 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:32 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:32 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:32 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 9 with //*[not(*)] 2022-08-28 18:56:32 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 9 2022-08-28 18:56:32 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:32 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:32 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:32 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:32 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:32 WARN [Crawler.401.needBackToApp] not in app white list ListBuffer(com.example.android.apis) 2022-08-28 18:56:32 WARN [Crawler.402.needBackToApp] jump to other app appName=com.google.android.apps.nexuslauncher lastAppName=com.example.android.apis 2022-08-28 18:56:32 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:32 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:32 INFO [Crawler.756.beforeElementAction] com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:32 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:32 INFO [Crawler.1043.doElementAction] current index = 8 2022-08-28 18:56:32 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:32 INFO [Crawler.1045.doElementAction] current action = _BackApp 2022-08-28 18:56:32 INFO [Crawler.1046.doElementAction] current element = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:32 INFO [Crawler.1047.doElementAction] current url = com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:32 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:32 INFO [Crawler.1049.doElementAction] current file name = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back 2022-08-28 18:56:32 INFO [URIElementStore.67.saveReqHash] save reqHash to 8 2022-08-28 18:56:32 INFO [URIElementStore.83.saveReqDom] save reqDom to 8 2022-08-28 18:56:32 INFO [URIElementStore.97.saveReqImg] save reqImg 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png to 8 2022-08-28 18:56:32 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:32 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:32 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:33 INFO [Crawler.1067.doElementAction] backApp 2022-08-28 18:56:34 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:34 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:35 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:35 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:35 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again 2022-08-28 18:56:35 INFO [Crawler.1226.saveScreen] screenshot success 2022-08-28 18:56:36 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:36 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:36 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:36 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:36 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:36 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:36 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:36 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:36 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:36 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:36 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:36 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:36 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:36 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:36 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c31baa779b8e67fd12325e531e187aa2 2022-08-28 18:56:36 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:36 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.xml 2022-08-28 18:56:36 INFO [URIElementStore.75.saveResHash] save resHash to 8 2022-08-28 18:56:36 INFO [URIElementStore.106.saveResImg] save resImg 20220828185603_com.example.android.apis/8_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.png to 8 2022-08-28 18:56:36 INFO [URIElementStore.90.saveResDom] save resDom to 8 2022-08-28 18:56:36 INFO [Crawler.945.crawl] crawl use 3297 ms 2022-08-28 18:56:36 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:36 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:36 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:36 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 9 with //*[not(*)] 2022-08-28 18:56:36 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 9 2022-08-28 18:56:36 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:36 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:36 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:36 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:36 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:36 WARN [Crawler.401.needBackToApp] not in app white list ListBuffer(com.example.android.apis) 2022-08-28 18:56:36 WARN [Crawler.402.needBackToApp] jump to other app appName=com.google.android.apps.nexuslauncher lastAppName=com.google.android.apps.nexuslauncher 2022-08-28 18:56:36 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:36 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:36 INFO [Crawler.756.beforeElementAction] com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:36 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:36 INFO [Crawler.1043.doElementAction] current index = 9 2022-08-28 18:56:36 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:36 INFO [Crawler.1045.doElementAction] current action = _BackApp 2022-08-28 18:56:36 INFO [Crawler.1046.doElementAction] current element = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:36 INFO [Crawler.1047.doElementAction] current url = com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:36 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:36 INFO [Crawler.1049.doElementAction] current file name = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back 2022-08-28 18:56:36 INFO [URIElementStore.83.saveReqDom] save reqDom to 9 2022-08-28 18:56:36 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/9_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:36 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/9_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:36 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/9_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:36 INFO [Crawler.1067.doElementAction] backApp 2022-08-28 18:56:37 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:37 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:38 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:38 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:38 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:38 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:38 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:38 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:38 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:38 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:38 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:38 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:38 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:38 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:38 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:38 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:38 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:38 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:38 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c31baa779b8e67fd12325e531e187aa2 2022-08-28 18:56:38 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:38 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/9_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.xml 2022-08-28 18:56:38 INFO [URIElementStore.90.saveResDom] save resDom to 9 2022-08-28 18:56:38 INFO [ReportPlugin.46.needReport] read command from D:\test_tools\AppCrawler\20220828185603_com.example.android.apis\request 2022-08-28 18:56:38 INFO [ReportPlugin.52.needReport] 2022-08-28 18:56:38 INFO [Crawler.945.crawl] crawl use 2772 ms 2022-08-28 18:56:38 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:38 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:38 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:38 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 9 with //*[not(*)] 2022-08-28 18:56:38 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 9 2022-08-28 18:56:38 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:38 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:38 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:38 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:38 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:38 WARN [Crawler.401.needBackToApp] not in app white list ListBuffer(com.example.android.apis) 2022-08-28 18:56:38 WARN [Crawler.402.needBackToApp] jump to other app appName=com.google.android.apps.nexuslauncher lastAppName=com.google.android.apps.nexuslauncher 2022-08-28 18:56:38 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:38 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:38 INFO [Crawler.756.beforeElementAction] com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:38 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:38 INFO [Crawler.1043.doElementAction] current index = 10 2022-08-28 18:56:38 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:38 INFO [Crawler.1045.doElementAction] current action = _BackApp 2022-08-28 18:56:38 INFO [Crawler.1046.doElementAction] current element = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:38 INFO [Crawler.1047.doElementAction] current url = com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:38 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:38 INFO [Crawler.1049.doElementAction] current file name = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back 2022-08-28 18:56:38 INFO [URIElementStore.83.saveReqDom] save reqDom to 10 2022-08-28 18:56:38 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/10_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:38 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/10_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:38 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/10_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:39 INFO [Crawler.1067.doElementAction] backApp 2022-08-28 18:56:40 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:40 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:41 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:41 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:41 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:41 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:41 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:41 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:41 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:41 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:41 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:41 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:41 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:41 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:41 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:41 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:41 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:41 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:41 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c31baa779b8e67fd12325e531e187aa2 2022-08-28 18:56:41 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:41 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/10_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.xml 2022-08-28 18:56:41 INFO [URIElementStore.90.saveResDom] save resDom to 10 2022-08-28 18:56:41 INFO [Crawler.945.crawl] crawl use 2759 ms 2022-08-28 18:56:41 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:41 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:41 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:41 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 9 with //*[not(*)] 2022-08-28 18:56:41 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 9 2022-08-28 18:56:41 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:41 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:41 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:41 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:41 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:41 WARN [Crawler.401.needBackToApp] not in app white list ListBuffer(com.example.android.apis) 2022-08-28 18:56:41 WARN [Crawler.402.needBackToApp] jump to other app appName=com.google.android.apps.nexuslauncher lastAppName=com.google.android.apps.nexuslauncher 2022-08-28 18:56:41 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:41 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:41 INFO [Crawler.756.beforeElementAction] com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:41 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:41 INFO [Crawler.1043.doElementAction] current index = 11 2022-08-28 18:56:41 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:41 INFO [Crawler.1045.doElementAction] current action = _BackApp 2022-08-28 18:56:41 INFO [Crawler.1046.doElementAction] current element = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:41 INFO [Crawler.1047.doElementAction] current url = com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:41 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:41 INFO [Crawler.1049.doElementAction] current file name = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back 2022-08-28 18:56:41 INFO [URIElementStore.83.saveReqDom] save reqDom to 11 2022-08-28 18:56:41 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/11_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:41 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/11_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:41 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/11_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:42 INFO [Crawler.1067.doElementAction] backApp 2022-08-28 18:56:43 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:43 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:44 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:44 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:44 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:44 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:44 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:44 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:44 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:44 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:44 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:44 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:44 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:44 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:44 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:44 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:44 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:44 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:44 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c31baa779b8e67fd12325e531e187aa2 2022-08-28 18:56:44 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:44 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/11_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.xml 2022-08-28 18:56:44 INFO [URIElementStore.90.saveResDom] save resDom to 11 2022-08-28 18:56:44 INFO [Crawler.945.crawl] crawl use 2782 ms 2022-08-28 18:56:44 INFO [Crawler.953.crawl] crawl next 2022-08-28 18:56:44 ERROR [Crawler.418.needExitApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:44 ERROR [Crawler.419.needExitApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:44 FATAL [Crawler.420.needExitApp] appNameRecord last 5 List(com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:44 FATAL [Crawler.960.crawl] get signal to exit 2022-08-28 18:56:44 DEBUG [Crawler.970.crawl] refresh success 2022-08-28 18:56:44 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,null,List(),3) 2022-08-28 18:56:44 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 9 with //*[not(*)] 2022-08-28 18:56:44 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 9 2022-08-28 18:56:44 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2022-08-28 18:56:44 DEBUG [Crawler.1266.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,null,List(),3) 2022-08-28 18:56:44 TRACE [Crawler.1275.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2022-08-28 18:56:44 DEBUG [Crawler.396.needBackToApp] ListBuffer(com.example.android.apis) 2022-08-28 18:56:44 DEBUG [Crawler.397.needBackToApp] List(com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.example.android.apis, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher, com.google.android.apps.nexuslauncher) 2022-08-28 18:56:44 WARN [Crawler.401.needBackToApp] not in app white list ListBuffer(com.example.android.apis) 2022-08-28 18:56:44 WARN [Crawler.402.needBackToApp] jump to other app appName=com.google.android.apps.nexuslauncher lastAppName=com.google.android.apps.nexuslauncher 2022-08-28 18:56:44 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with /*/* 2022-08-28 18:56:44 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:44 INFO [Crawler.756.beforeElementAction] com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:44 TRACE [Crawler.762.beforeElementAction] beforeElementAction 2022-08-28 18:56:44 INFO [Crawler.1043.doElementAction] current index = 12 2022-08-28 18:56:44 INFO [Crawler.1044.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:44 INFO [Crawler.1045.doElementAction] current action = _BackApp 2022-08-28 18:56:44 INFO [Crawler.1046.doElementAction] current element = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=BackApp 2022-08-28 18:56:44 INFO [Crawler.1047.doElementAction] current url = com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:44 INFO [Crawler.1048.doElementAction] current tag path = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:44 INFO [Crawler.1049.doElementAction] current file name = com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back 2022-08-28 18:56:44 INFO [URIElementStore.83.saveReqDom] save reqDom to 12 2022-08-28 18:56:44 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220828185603_com.example.android.apis/12_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:44 INFO [ScreenShot.45.clip] write png 20220828185603_com.example.android.apis/12_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:44 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220828185603_com.example.android.apis/12_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.click.png 2022-08-28 18:56:45 INFO [Crawler.1067.doElementAction] backApp 2022-08-28 18:56:46 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after 2022-08-28 18:56:46 INFO [Crawler.1161.doElementAction] sleep 1000 ms 2022-08-28 18:56:47 INFO [Crawler.781.afterElementAction] mark image exist 2022-08-28 18:56:47 INFO [Crawler.1215.saveScreen] start screenshot 2022-08-28 18:56:47 INFO [Crawler.693.refreshPage] refresh page 2022-08-28 18:56:47 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium 2022-08-28 18:56:47 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success 2022-08-28 18:56:47 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] 2022-08-28 18:56:47 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format 2022-08-28 18:56:47 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:47 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:47 INFO [Crawler.711.parsePageContext] appName = com.google.android.apps.nexuslauncher 2022-08-28 18:56:47 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:47 INFO [Crawler.373.getUri] defineUrl= 2022-08-28 18:56:47 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 1 with (//*[@package!=''])[1] 2022-08-28 18:56:47 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1 2022-08-28 18:56:47 INFO [Crawler.715.parsePageContext] url=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:47 TRACE [Crawler.731.parsePageContext] urlStack=Stack(com.google.android.apps.nexuslauncher.NexusLauncherActivity, com.example.android.apis.ApiDemos) 2022-08-28 18:56:47 INFO [Crawler.742.parsePageContext] currentContentHash=c31baa779b8e67fd12325e531e187aa2 lastContentHash=c31baa779b8e67fd12325e531e187aa2 2022-08-28 18:56:47 INFO [Crawler.746.parsePageContext] ui not change 2022-08-28 18:56:47 INFO [Crawler.1201.saveDom] save to 20220828185603_com.example.android.apis/12_com.google.android.apps.nexuslauncher.NexusLauncherActivity.tag=BackApp.depth=2.id=BackApp.name=Back.clicked.xml 2022-08-28 18:56:47 INFO [URIElementStore.90.saveResDom] save resDom to 12 2022-08-28 18:56:47 INFO [Crawler.945.crawl] crawl use 2769 ms 2022-08-28 18:56:47 FATAL [Crawler.950.crawl] exitCrawl=true, return 2022-08-28 18:56:47 INFO [Crawler.217.crawlWithRetry] crawl finish 2022-08-28 18:56:47 INFO [Crawler.1286.stop] ctrl c interval = 0 2022-08-28 18:56:47 INFO [Crawler.1186.saveLog] save log to 20220828185603_com.example.android.apis/elements.yml 2022-08-28 18:56:47 INFO [ReportPlugin.78.generateReport] reportPath=D:\test_tools\AppCrawler\20220828185603_com.example.android.apis 2022-08-28 18:56:47 INFO [ScalaTestRuntime.15.genTestCase] save testcase 2022-08-28 18:56:47 INFO [ReportFactory$.33.initReportPath] reportPath=D:\test_tools\AppCrawler\20220828185603_com.example.android.apis 2022-08-28 18:56:47 INFO [ReportFactory$.35.initReportPath] testcaseDir=D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:47 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.example.android.apis.ApiDemos 2022-08-28 18:56:47 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=com.example.android.apis.ApiDemos 2022-08-28 18:56:47 TRACE [SuiteToClass$.57.genTestCaseClass] uri_$eq("com.example.android.apis.ApiDemos"); name_$eq("com.example.android.apis.ApiDemos"); 2022-08-28 18:56:47 DEBUG [SuiteToClass$.61.genTestCaseClass] write to D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:47 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.example.android.apis.AnimationCloning 2022-08-28 18:56:47 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=com.example.android.apis.AnimationCloning 2022-08-28 18:56:47 TRACE [SuiteToClass$.57.genTestCaseClass] uri_$eq("com.example.android.apis.AnimationCloning"); name_$eq("com.example.android.apis.AnimationCloning"); 2022-08-28 18:56:47 DEBUG [SuiteToClass$.61.genTestCaseClass] write to D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:47 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:47 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:47 TRACE [SuiteToClass$.57.genTestCaseClass] uri_$eq("com.google.android.apps.nexuslauncher.NexusLauncherActivity"); name_$eq("com.google.android.apps.nexuslauncher.NexusLauncherActivity"); 2022-08-28 18:56:47 DEBUG [SuiteToClass$.61.genTestCaseClass] write to D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:47 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class Steps 2022-08-28 18:56:47 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=Steps 2022-08-28 18:56:47 TRACE [SuiteToClass$.57.genTestCaseClass] uri_$eq("Steps"); name_$eq("Steps"); 2022-08-28 18:56:47 DEBUG [SuiteToClass$.61.genTestCaseClass] write to D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ 2022-08-28 18:56:47 DEBUG [ScalaTestRuntime.42.runTestCase] -RD:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/-oF-uD:\test_tools\AppCrawler\20220828185603_com.example.android.apis-hD:\test_tools\AppCrawler\20220828185603_com.example.android.apis 2022-08-28 18:56:47 INFO [ScalaTestRuntime.59.runTestCase] run -R D:\test_tools\AppCrawler\20220828185603_com.example.android.apis/tmp/ -oF -u D:\test_tools\AppCrawler\20220828185603_com.example.android.apis -h D:\test_tools\AppCrawler\20220828185603_com.example.android.apis 2022-08-28 18:56:47 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 21 2022-08-28 18:56:47 TRACE [ReportFactory$.62.getSelected] uri=Steps 2022-08-28 18:56:47 TRACE [ReportFactory$.70.getSelected] sortedElements=1 2022-08-28 18:56:47 INFO [ReportFactory$.78.getSelected] only show clicked elements 2022-08-28 18:56:47 TRACE [ReportFactory$.81.getSelected] selected elements size = 1 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:47 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 21 2022-08-28 18:56:47 TRACE [ReportFactory$.62.getSelected] uri=com.example.android.apis.AnimationCloning 2022-08-28 18:56:47 TRACE [ReportFactory$.70.getSelected] sortedElements=2 2022-08-28 18:56:47 INFO [ReportFactory$.78.getSelected] only show clicked elements 2022-08-28 18:56:47 TRACE [ReportFactory$.81.getSelected] selected elements size = 2 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.LinearLayout[@resource-id='com.example.android.apis:id/container' and @class='android.widget.LinearLayout']//android.widget.Button[@resource-id='com.example.android.apis:id/startButton' and @text='Run' and @class='android.widget.Button'] 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:47 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 21 2022-08-28 18:56:47 TRACE [ReportFactory$.62.getSelected] uri=com.example.android.apis.ApiDemos 2022-08-28 18:56:47 TRACE [ReportFactory$.70.getSelected] sortedElements=17 2022-08-28 18:56:47 INFO [ReportFactory$.78.getSelected] only show clicked elements 2022-08-28 18:56:47 TRACE [ReportFactory$.81.getSelected] selected elements size = 4 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Animation' and @class='android.widget.TextView'] 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout']//android.view.ViewGroup[@resource-id='android:id/decor_content_parent' and @class='android.view.ViewGroup']//android.widget.FrameLayout[@resource-id='android:id/content' and @class='android.widget.FrameLayout']//android.widget.ListView[@resource-id='android:id/list' and @class='android.widget.ListView']//android.widget.TextView[@resource-id='android:id/text1' and @text='Cloning' and @class='android.widget.TextView'] 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:47 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 21 2022-08-28 18:56:47 TRACE [ReportFactory$.62.getSelected] uri=com.google.android.apps.nexuslauncher.NexusLauncherActivity 2022-08-28 18:56:47 TRACE [ReportFactory$.70.getSelected] sortedElements=1 2022-08-28 18:56:47 INFO [ReportFactory$.78.getSelected] only show clicked elements 2022-08-28 18:56:47 TRACE [ReportFactory$.81.getSelected] selected elements size = 1 2022-08-28 18:56:47 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2022-08-28 18:56:47 INFO [FreeMind.18.stop] genereate freemind file freemind.mm 2022-08-28 18:56:47 INFO [Crawler.1296.stop] generate report finish 2022-08-28 18:56:47 INFO [Crawler.1297.stop] report in 20220828185603_com.example.android.apis