appcraler遍历10秒后自动退出

以下是日志文件

appcrawler.log (534.3 KB)

是因为触发了tagLimit 因为app首页中的元素都处于同一个list内,触发了下面这一条tagLimit限制,所以这些元素只能最多被点击两条,最后导致前两个菜单内的元素被访问完毕后,退出了整个访问,开始退出app并最后导致遍历结束
image
如果想要在上层页面中遍历更多的数据 可以把这个tagLimit的设置改大一些,另外还需要注意tagLimitMax的设置

关键信息在这

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

核心问题是这一句

com.example.android.apis.ApiDemos.tag=TextView.depth=6.id=text1.text=Content need skip

你的app里所有的控件都是相同的id,导致了被认为是一个。相同或者相似的控件appcrawler会自动跳过。你可以修改下默认的yaml配置文件, 把 tagLimitMax: 2 修改为一个比较大的值。或者修改tagLimit, 增加一个单独的 tagLimit: [ {xpath: text1, times: 1000 } ]

tagLimitMax: 100  # 修改此处可以

#或者修改
tagLimit:
- xpath: text1
  times: 1000