通过adb方式测试,测试结果会报如下错误,而通过appium方式没有问题
2022-03-02 14:18:57 ERROR [Crawler.226.crawlWithRetry] create new session
Exception in thread “main” java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at com.ceshiren.appcrawler.utils.LogicUtils$.$anonfun$asyncTask$1(LogicUtils.scala:75)
at scala.util.Try$.apply(Try.scala:210)
at com.ceshiren.appcrawler.utils.LogicUtils$.asyncTask(LogicUtils.scala:66)
at com.ceshiren.appcrawler.plugin.ReportPlugin.afterElementAction(ReportPlugin.scala:32)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2(Crawler.scala:803)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2$adapted(Crawler.scala:803)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
at com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:803)
at com.ceshiren.appcrawler.core.Crawler.crawl(Crawler.scala:1024)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$crawlWithRetry$1(Crawler.scala:214)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.util.Try$.apply(Try.scala:210)
at com.ceshiren.appcrawler.core.Crawler.crawlWithRetry(Crawler.scala:214)
at com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:171)
at com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:319)
at com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:286)
at com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:73)
at com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at javassist.ClassPool.createCtClass(ClassPool.java:542)
at javassist.ClassPool.get0(ClassPool.java:518)
at javassist.ClassPool.getOrNull(ClassPool.java:461)
at com.ceshiren.appcrawler.plugin.scalatest.SuiteToClass$.genTestCaseClass(SuiteToClass.scala:42)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2(ScalaTestRuntime.scala:28)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2$adapted(ScalaTestRuntime.scala:21)
at scala.collection.immutable.List.foreach(List.scala:333)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.genTestCase(ScalaTestRuntime.scala:21)
at com.ceshiren.appcrawler.plugin.ReportPlugin.generateReport(ReportPlugin.scala:81)
at com.ceshiren.appcrawler.plugin.ReportPlugin.$anonfun$afterElementAction$1(ReportPlugin.scala:35)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at com.ceshiren.appcrawler.utils.LogicUtils$$anon$1.call(LogicUtils.scala:69)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
能上传appcrawler.log文件来看看么? 可以把后缀改成txt上传一下
推测应该是有数据没有收集到 导致部分用例的文件名保存成了空
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[contains(@class, ‘Text’) and @clickable=‘true’ and string-length(@text)<10]
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //[@clickable=‘true’]//[contains(@class, ‘Text’) and string-length(@text)<10]
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[@clickable=‘true’]//[contains(@class, ‘Text’) and string-length(@text)<10]
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //[contains(@class, ‘Image’) and @clickable=‘true’]
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 2 with //[contains(@class, ‘Image’) and @clickable=‘true’]
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 2
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.name=More options
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=del.name=delete
2022-03-02 14:18:51 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //[@clickable=‘true’]/[contains(@class, ‘Image’)]
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[@clickable=‘true’]/[contains(@class, ‘Image’)]
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [Crawler.508.$anonfun$getAvailableElement$1] selectedList xpath = //[@clickable=‘true’ and contains(@class, ‘Button’)]
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 18 with //[@clickable=‘true’ and contains(@class, ‘Button’)]
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 18
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_7.text=7
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_8.text=8
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_9.text=9
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_4.text=4
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_5.text=5
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_6.text=6
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_1.text=1
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_2.text=2
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_3.text=3
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=digit_0.text=0
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=dec_point.name=point.text=.
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=eq.name=equals.text==
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=del.name=delete
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=op_div.name=divide.text=梅
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=op_mul.name=multiply.text=脳
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.512.$anonfun$getAvailableElement$3] .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 INFO [Crawler.517.getAvailableElement] selected nodes size = 19
2022-03-02 14:18:51 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = .[0-9]{2}.*
2022-03-02 14:18:51 TRACE [Crawler.549.$anonfun$getAvailableElement$11] .tag=node.depth=12.id=formula.text=7894561230.脳
2022-03-02 14:18:51 TRACE [Crawler.546.$anonfun$getAvailableElement$9] blackList xpath = Get Music
2022-03-02 14:18:51 INFO [Crawler.554.getAvailableElement] selectedElements - black elements size = 19
2022-03-02 14:18:51 INFO [Crawler.573.getAvailableElement] selectedElements - backButton size=19
2022-03-02 14:18:51 DEBUG [URIElementStore.122.isClicked] element=.tag=node.depth=11.id=mode.name=degree mode.text=DEG first show, need click
2022-03-02 14:18:51 DEBUG [URIElementStore.122.isClicked] element=.tag=node.depth=12.id=op_sub.name=minus.text=鈭? first show, need click
2022-03-02 14:18:51 DEBUG [URIElementStore.122.isClicked] element=.tag=node.depth=12.id=op_add.name=plus.text=+ first show, need click
2022-03-02 14:18:51 INFO [Crawler.581.getAvailableElement] selectedElements - clicked size=3
2022-03-02 14:18:51 TRACE [Crawler.583.$anonfun$getAvailableElement$18] .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 TRACE [Crawler.583.$anonfun$getAvailableElement$18] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.583.$anonfun$getAvailableElement$18] .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 DEBUG [URIElementStore.131.isSkipped] element=.tag=node.depth=11.id=mode.name=degree mode.text=DEG first show, need click
2022-03-02 14:18:51 DEBUG [URIElementStore.131.isSkipped] element=.tag=node.depth=12.id=op_sub.name=minus.text=鈭? first show, need click
2022-03-02 14:18:51 DEBUG [URIElementStore.131.isSkipped] element=.tag=node.depth=12.id=op_add.name=plus.text=+ first show, need click
2022-03-02 14:18:51 INFO [Crawler.588.getAvailableElement] selectedElements - skiped fresh elements size=3
2022-03-02 14:18:51 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //[@selected=‘true’]/…//
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[@selected=‘true’]/…//
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [Crawler.609.$anonfun$getAvailableElement$24] lastList xpath = //[@selected=‘true’]/…/…//
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[@selected=‘true’]/…/…//
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by depth
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=11 selected=false list=false .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by list
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=11 selected=false list=false .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 TRACE [Crawler.683.$anonfun$sortByAttribute$1] sort by selected
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 TRACE [Crawler.685.$anonfun$sortByAttribute$7] latest=0 depth=11 selected=false list=false .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 TRACE [Crawler.630.getAvailableElement] sorted nodes length=3
2022-03-02 14:18:51 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=12 selected=false list=false .tag=node.depth=12.id=op_add.name=plus.text=+
2022-03-02 14:18:51 TRACE [Crawler.633.$anonfun$getAvailableElement$28] latest=0 depth=11 selected=false list=false .tag=node.depth=11.id=mode.name=degree mode.text=DEG
2022-03-02 14:18:51 INFO [Crawler.638.getAvailableElement] next element Some(.tag=node.depth=12.id=op_sub.name=minus.text=鈭?)
2022-03-02 14:18:51 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),确定,List(),1000)
2022-03-02 14:18:51 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0
2022-03-02 14:18:51 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),取消,List(),1000)
2022-03-02 14:18:51 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0
2022-03-02 14:18:51 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),share_comment_guide_btn_name,List(),1000)
2022-03-02 14:18:51 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0
2022-03-02 14:18:51 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [TagLimitPlugin.77.$anonfun$getTimesFromTagLimit$1] find tag with Step(List(),null,List(),//[contains(@class, ‘List’)]//,List(),2)
2022-03-02 14:18:51 TRACE [XPathUtil$.233.getNodeListByXPath] nodeList length 0 with //[contains(@class, ‘List’)]//
2022-03-02 14:18:51 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 0
2022-03-02 14:18:51 TRACE [TagLimitPlugin.79.$anonfun$getTimesFromTagLimit$1] 0
2022-03-02 14:18:51 TRACE [TagLimitPlugin.80.$anonfun$getTimesFromTagLimit$1] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 INFO [TagLimitPlugin.48.fixElementAction] tagLimit[//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/action_bar_root’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘android:id/content’ and @class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/drag_layout’ and @class=‘android.view.ViewGroup’]//node[@resource-id=‘com.google.android.calculator:id/main_calculator’ and @class=‘android.widget.LinearLayout’]//node[@class=‘androidx.slidingpanelayout.widget.SlidingPaneLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_basic’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_operator’ and @class=‘android.view.ViewGroup’]//node[@content-desc=‘minus’ and @resource-id=‘com.google.android.calculator:id/op_sub’ and @class=‘android.widget.Button’]]=20
2022-03-02 14:18:51 INFO [Crawler.756.beforeElementAction] .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 TRACE [Crawler.762.beforeElementAction] beforeElementAction
2022-03-02 14:18:51 INFO [Crawler.1043.doElementAction] current index = 19
2022-03-02 14:18:51 INFO [Crawler.1044.doElementAction] current xpath = //node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/action_bar_root’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘android:id/content’ and @class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/drag_layout’ and @class=‘android.view.ViewGroup’]//node[@resource-id=‘com.google.android.calculator:id/main_calculator’ and @class=‘android.widget.LinearLayout’]//node[@class=‘androidx.slidingpanelayout.widget.SlidingPaneLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_basic’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_operator’ and @class=‘android.view.ViewGroup’]//node[@content-desc=‘minus’ and @resource-id=‘com.google.android.calculator:id/op_sub’ and @text=‘鈭?’ and @class=‘android.widget.Button’]
2022-03-02 14:18:51 INFO [Crawler.1045.doElementAction] current action = click
2022-03-02 14:18:51 INFO [Crawler.1046.doElementAction] current element = .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 INFO [Crawler.1047.doElementAction] current url =
2022-03-02 14:18:51 INFO [Crawler.1048.doElementAction] current tag path = //node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/action_bar_root’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘android:id/content’ and @class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/drag_layout’ and @class=‘android.view.ViewGroup’]//node[@resource-id=‘com.google.android.calculator:id/main_calculator’ and @class=‘android.widget.LinearLayout’]//node[@class=‘androidx.slidingpanelayout.widget.SlidingPaneLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_basic’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_operator’ and @class=‘android.view.ViewGroup’]//node[@content-desc=‘minus’ and @resource-id=‘com.google.android.calculator:id/op_sub’ and @class=‘android.widget.Button’]
2022-03-02 14:18:51 INFO [Crawler.1049.doElementAction] current file name = .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 INFO [URIElementStore.67.saveReqHash] save reqHash to 19
2022-03-02 14:18:51 INFO [URIElementStore.83.saveReqDom] save reqDom to 19
2022-03-02 14:18:51 INFO [URIElementStore.97.saveReqImg] save reqImg 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.click.png to 19
2022-03-02 14:18:51 INFO [Crawler.1174.saveElementScreenshot] draw element in 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.click.png
2022-03-02 14:18:51 INFO [ScreenShot.45.clip] write png 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.click.png
2022-03-02 14:18:51 INFO [ScreenShot.57.clip] ImageIO.write newImageName 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.click.png
2022-03-02 14:18:51 INFO [Crawler.1108.doElementAction] need input click
2022-03-02 14:18:51 INFO [ReactWebDriver.36.findElement] find by uri element= .tag=node.depth=12.id=op_sub.name=minus.text=鈭?
2022-03-02 14:18:51 INFO [ReactWebDriver.43.findElement] find by xpath success
2022-03-02 14:18:51 INFO [Crawler.1127.$anonfun$doElementAction$3] click element
2022-03-02 14:18:51 INFO [AdbDriver.171.shell] C:\Users\XXX\AppData\Local\Android\Sdk\platform-tools/adb shell input tap 557 1079
2022-03-02 14:18:52 INFO [AdbDriver.175.shell]
2022-03-02 14:18:52 INFO [LogicUtils$.83.asyncTask] use time 1.218 seconds name=action result=success
2022-03-02 14:18:52 INFO [Crawler.1157.doElementAction] afterAllRetry = 0 because of last action not equal to after
2022-03-02 14:18:52 INFO [Crawler.1161.doElementAction] sleep 1000 ms
2022-03-02 14:18:53 INFO [Crawler.781.afterElementAction] mark image exist
2022-03-02 14:18:53 INFO [Crawler.1215.saveScreen] start screenshot
2022-03-02 14:18:53 INFO [Crawler.1220.$anonfun$saveScreen$2] ui change screenshot again
2022-03-02 14:18:53 INFO [AdbDriver.84.screenshot] C:\Users\XXX\AppData\Local\Temp\tmp4224016788043035269.png
2022-03-02 14:18:53 INFO [AdbDriver.86.screenshot] C:\Users\XXX\AppData\Local\Android\Sdk\platform-tools/adb exec-out screencap -p
2022-03-02 14:18:54 INFO [LogicUtils$.83.asyncTask] use time 0.697 seconds name=screenshot result=success
2022-03-02 14:18:54 INFO [Crawler.1226.saveScreen] screenshot success
2022-03-02 14:18:54 INFO [Crawler.693.refreshPage] refresh page
2022-03-02 14:18:54 INFO [ReactWebDriver.88.getPageSourceWithRetry] start to get page source from appium
2022-03-02 14:18:54 INFO [AdbDriver.171.shell] C:\Users\XXX\AppData\Local\Android\Sdk\platform-tools/adb shell eval "[ -f /data/local/tmp/source.xml ] && rm /data/local/tmp/source.xml >/dev/null 2>&1 ;
uiautomator dump /data/local/tmp/source.xml > /dev/null;
cat /data/local/tmp/source.xml || echo ERROR "
2022-03-02 14:18:56 INFO [AdbDriver.175.shell] <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
2022-03-02 14:18:56 INFO [LogicUtils$.83.asyncTask] use time 2.386 seconds name=getPageSource result=success
2022-03-02 14:18:56 TRACE [ReactWebDriver.95.$anonfun$getPageSourceWithRetry$1] get raw page source success
2022-03-02 14:18:56 DEBUG [ReactWebDriver.98.$anonfun$getPageSourceWithRetry$1] <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
2022-03-02 14:18:56 INFO [ReactWebDriver.111.$anonfun$getPageSourceWithRetry$1] xml format
2022-03-02 14:18:56 INFO [AdbDriver.171.shell] C:\Users\XXX\AppData\Local\Android\Sdk\platform-tools/adb shell "dumpsys window windows | grep ‘Focus.* ./.}’ | grep -o ‘[^ /]/[^ }]’ | head -1 "
2022-03-02 14:18:56 INFO [AdbDriver.175.shell]
2022-03-02 14:18:56 INFO [Crawler.711.parsePageContext] appName =
2022-03-02 14:18:56 TRACE [XPathUtil$.336.getNodeListByXPath] filted node list length 1
2022-03-02 14:18:56 INFO [Crawler.373.getUri] defineUrl=
2022-03-02 14:18:56 INFO [AdbDriver.171.shell] C:\Users\XXX\AppData\Local\Android\Sdk\platform-tools/adb shell "dumpsys window windows | grep ‘Focus.* ./.}’ | grep -o ‘[^ /]/[^ }]’ | head -1 "
2022-03-02 14:18:56 INFO [AdbDriver.175.shell]
2022-03-02 14:18:56 INFO [Crawler.715.parsePageContext] url=
2022-03-02 14:18:56 TRACE [Crawler.731.parsePageContext] urlStack=Stack()
2022-03-02 14:18:56 INFO [Crawler.742.parsePageContext] currentContentHash=082befb782c6902258e668c9940e5603 lastContentHash=e794a230ac977a2ec26342b5fc3ebf96
2022-03-02 14:18:56 INFO [Crawler.744.parsePageContext] ui change
2022-03-02 14:18:56 INFO [Crawler.1201.saveDom] save to 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.clicked.xml
2022-03-02 14:18:56 INFO [URIElementStore.75.saveResHash] save resHash to 19
2022-03-02 14:18:56 INFO [URIElementStore.106.saveResImg] save resImg 20220302141635_com.google.android.calculator/19_.tag=node.depth=12.id=op_sub.name=minus.text=鈭.clicked.png to 19
2022-03-02 14:18:56 INFO [URIElementStore.90.saveResDom] save resDom to 19
2022-03-02 14:18:56 INFO [TagLimitPlugin.65.afterElementAction] tagLimit[//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/action_bar_root’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘android:id/content’ and @class=‘android.widget.FrameLayout’]//node[@resource-id=‘com.google.android.calculator:id/drag_layout’ and @class=‘android.view.ViewGroup’]//node[@resource-id=‘com.google.android.calculator:id/main_calculator’ and @class=‘android.widget.LinearLayout’]//node[@class=‘androidx.slidingpanelayout.widget.SlidingPaneLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_basic’ and @class=‘android.widget.LinearLayout’]//node[@resource-id=‘com.google.android.calculator:id/pad_operator’ and @class=‘android.view.ViewGroup’]//node[@content-desc=‘minus’ and @resource-id=‘com.google.android.calculator:id/op_sub’ and @class=‘android.widget.Button’]]=19
2022-03-02 14:18:57 INFO [ReportPlugin.33.$anonfun$afterElementAction$1] generate test report
2022-03-02 14:18:57 INFO [ReportPlugin.78.generateReport] reportPath=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator
2022-03-02 14:18:57 INFO [ScalaTestRuntime.15.genTestCase] save testcase
2022-03-02 14:18:57 INFO [ReportFactory$.33.initReportPath] reportPath=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator
2022-03-02 14:18:57 INFO [ReportFactory$.35.initReportPath] testcaseDir=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator/tmp/
2022-03-02 14:18:57 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class
2022-03-02 14:18:57 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=
2022-03-02 14:18:57 ERROR [Crawler.221.crawlWithRetry] crawl not finish, return with exception
2022-03-02 14:18:57 ERROR [Crawler.222.crawlWithRetry] java.lang.StringIndexOutOfBoundsException: String index out of range: 0
2022-03-02 14:18:57 ERROR [Crawler.223.crawlWithRetry] StringIndexOutOfBoundsException: String index out of range: 0
2022-03-02 14:18:57 ERROR [Crawler.224.crawlWithRetry] java.lang.StringIndexOutOfBoundsException: String index out of range: 0
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] java.lang.StringIndexOutOfBoundsException: String index out of range: 0
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.lang.String.charAt(String.java:658)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.ClassPool.createCtClass(ClassPool.java:542)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.ClassPool.get0(ClassPool.java:518)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.ClassPool.getOrNull(ClassPool.java:461)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.SuiteToClass$.genTestCaseClass(SuiteToClass.scala:42)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2(ScalaTestRuntime.scala:28)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2$adapted(ScalaTestRuntime.scala:21)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.immutable.List.foreach(List.scala:333)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.genTestCase(ScalaTestRuntime.scala:21)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.generateReport(ReportPlugin.scala:81)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.$anonfun$afterElementAction$1(ReportPlugin.scala:35)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$$anon$1.call(LogicUtils.scala:69)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.lang.Thread.run(Thread.java:745)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] [wrapped] java.util.concurrent.ExecutionException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.report(FutureTask.java:122)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.get(FutureTask.java:206)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$.$anonfun$asyncTask$1(LogicUtils.scala:75)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.util.Try$.apply(Try.scala:210)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$.asyncTask(LogicUtils.scala:66)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.afterElementAction(ReportPlugin.scala:32)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2(Crawler.scala:803)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2$adapted(Crawler.scala:803)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:803)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.crawl(Crawler.scala:1024)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$crawlWithRetry$1(Crawler.scala:214)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.util.Try$.apply(Try.scala:210)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.crawlWithRetry(Crawler.scala:214)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:171)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:319)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:286)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:73)
2022-03-02 14:18:57 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala)
2022-03-02 14:18:57 ERROR [Crawler.226.crawlWithRetry] create new session
2022-03-02 14:22:10 INFO [Crawler.1286.stop] ctrl c interval = 0
2022-03-02 14:22:10 INFO [Crawler.1186.saveLog] save log to 20220302141635_com.google.android.calculator/elements.yml
2022-03-02 14:22:10 INFO [ReportPlugin.78.generateReport] reportPath=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator
2022-03-02 14:22:10 INFO [ScalaTestRuntime.15.genTestCase] save testcase
2022-03-02 14:22:10 INFO [ReportFactory$.33.initReportPath] reportPath=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator
2022-03-02 14:22:10 INFO [ReportFactory$.35.initReportPath] testcaseDir=F:\00-AndroidCI\AppCrawler\20220302141635_com.google.android.calculator/tmp/
2022-03-02 14:22:10 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class
2022-03-02 14:22:10 TRACE [SuiteToClass$.41.genTestCaseClass] classNameFormat=
通过adb命令获取当前访问的页面activity作为url进行路径标记时没有获取到数据 导致后续记录的时候报错了。不太清楚是不是你测试的app比较特殊。能提供一下被测应用的名称么?我们复现一下
app为com.google.android.calculator,也就是谷歌原生的app,系统为Android11,如果与app有关的话,我再使用其他的app测试下
可能跟Android版本有关 对应的命令貌似有变化,也可以单独抽离出那一行命令运行下
目前来看Android11上的一些谷歌自带的应用都有问题,能不能帮忙支持下Android11?
Android7.0上也会存在不同的问题,adb 方式感觉目前不稳定
2022-03-04 15:06:41 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.android.calculator2.com.android.calculator2.Calculator
2022-03-04 15:06:41 ERROR [Crawler.221.crawlWithRetry] crawl not finish, return with exception
2022-03-04 15:06:41 ERROR [Crawler.222.crawlWithRetry] javassist.CannotCompileException: [source error] syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.223.crawlWithRetry] SyntaxError: syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.224.crawlWithRetry] compile error: syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] compile error: syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1272)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parsePostfix(Parser.java:1049)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseUnaryExpr(Parser.java:904)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseBinaryExpr(Parser.java:794)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseConditionalExpr(Parser.java:739)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseExpression(Parser.java:719)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseArgumentList(Parser.java:1344)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseMethodCall(Parser.java:1196)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parsePostfix(Parser.java:1054)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseUnaryExpr(Parser.java:904)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseBinaryExpr(Parser.java:794)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseConditionalExpr(Parser.java:739)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseExpression(Parser.java:719)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseDeclarationOrExpression(Parser.java:608)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseStatement(Parser.java:295)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseBlock(Parser.java:307)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Parser.parseStatement(Parser.java:261)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.compiler.Javac.compileBody(Javac.java:219)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.CtBehavior.setBody(CtBehavior.java:466)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] [wrapped] javassist.CannotCompileException: [source error] syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.CtBehavior.setBody(CtBehavior.java:474)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.CtBehavior.setBody(CtBehavior.java:440)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at javassist.CtConstructor.setBody(CtConstructor.java:228)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.SuiteToClass$.genTestCaseClass(SuiteToClass.scala:58)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2(ScalaTestRuntime.scala:28)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2$adapted(ScalaTestRuntime.scala:21)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.immutable.List.foreach(List.scala:333)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.genTestCase(ScalaTestRuntime.scala:21)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.generateReport(ReportPlugin.scala:81)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.$anonfun$afterElementAction$1(ReportPlugin.scala:35)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$$anon$1.call(LogicUtils.scala:69)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.lang.Thread.run(Thread.java:745)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] [wrapped] java.util.concurrent.ExecutionException: javassist.CannotCompileException: [source error] syntax error near "lculator
“);
name_”
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.report(FutureTask.java:122)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at java.util.concurrent.FutureTask.get(FutureTask.java:206)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$.$anonfun$asyncTask$1(LogicUtils.scala:75)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.util.Try$.apply(Try.scala:210)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.utils.LogicUtils$.asyncTask(LogicUtils.scala:66)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.plugin.ReportPlugin.afterElementAction(ReportPlugin.scala:32)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2(Crawler.scala:803)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2$adapted(Crawler.scala:803)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:803)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.crawl(Crawler.scala:1024)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.$anonfun$crawlWithRetry$1(Crawler.scala:214)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at scala.util.Try$.apply(Try.scala:210)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.crawlWithRetry(Crawler.scala:214)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:171)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:319)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:286)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:73)
2022-03-04 15:06:41 ERROR [Crawler.225.$anonfun$crawlWithRetry$2] at com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala)
2022-03-04 15:06:41 ERROR [Crawler.226.crawlWithRetry] create new session
Exception in thread “main” java.util.concurrent.ExecutionException: javassist.CannotCompileException: [source error] syntax error near "lculator
“);
name_”
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:206)
at com.ceshiren.appcrawler.utils.LogicUtils$.$anonfun$asyncTask$1(LogicUtils.scala:75)
at scala.util.Try$.apply(Try.scala:210)
at com.ceshiren.appcrawler.utils.LogicUtils$.asyncTask(LogicUtils.scala:66)
at com.ceshiren.appcrawler.plugin.ReportPlugin.afterElementAction(ReportPlugin.scala:32)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2(Crawler.scala:803)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$afterElementAction$2$adapted(Crawler.scala:803)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:563)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:561)
at scala.collection.AbstractIterable.foreach(Iterable.scala:919)
at com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:803)
at com.ceshiren.appcrawler.core.Crawler.crawl(Crawler.scala:1024)
at com.ceshiren.appcrawler.core.Crawler.$anonfun$crawlWithRetry$1(Crawler.scala:214)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.util.Try$.apply(Try.scala:210)
at com.ceshiren.appcrawler.core.Crawler.crawlWithRetry(Crawler.scala:214)
at com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:171)
at com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:319)
at com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:286)
at com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:73)
at com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala)
Caused by: javassist.CannotCompileException: [source error] syntax error near "lculator
“);
name_”
at javassist.CtBehavior.setBody(CtBehavior.java:474)
at javassist.CtBehavior.setBody(CtBehavior.java:440)
at javassist.CtConstructor.setBody(CtConstructor.java:228)
at com.ceshiren.appcrawler.plugin.scalatest.SuiteToClass$.genTestCaseClass(SuiteToClass.scala:58)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2(ScalaTestRuntime.scala:28)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.$anonfun$genTestCase$2$adapted(ScalaTestRuntime.scala:21)
at scala.collection.immutable.List.foreach(List.scala:333)
at com.ceshiren.appcrawler.plugin.scalatest.ScalaTestRuntime.genTestCase(ScalaTestRuntime.scala:21)
at com.ceshiren.appcrawler.plugin.ReportPlugin.generateReport(ReportPlugin.scala:81)
at com.ceshiren.appcrawler.plugin.ReportPlugin.$anonfun$afterElementAction$1(ReportPlugin.scala:35)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at com.ceshiren.appcrawler.utils.LogicUtils$$anon$1.call(LogicUtils.scala:69)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: compile error: syntax error near "lculator
“);
name_”
at javassist.compiler.Parser.parsePrimaryExpr(Parser.java:1272)
at javassist.compiler.Parser.parsePostfix(Parser.java:1049)
at javassist.compiler.Parser.parseUnaryExpr(Parser.java:904)
at javassist.compiler.Parser.parseBinaryExpr(Parser.java:794)
at javassist.compiler.Parser.parseConditionalExpr(Parser.java:739)
at javassist.compiler.Parser.parseExpression(Parser.java:719)
at javassist.compiler.Parser.parseArgumentList(Parser.java:1344)
at javassist.compiler.Parser.parseMethodCall(Parser.java:1196)
at javassist.compiler.Parser.parsePostfix(Parser.java:1054)
at javassist.compiler.Parser.parseUnaryExpr(Parser.java:904)
at javassist.compiler.Parser.parseBinaryExpr(Parser.java:794)
at javassist.compiler.Parser.parseConditionalExpr(Parser.java:739)
at javassist.compiler.Parser.parseExpression(Parser.java:719)
at javassist.compiler.Parser.parseDeclarationOrExpression(Parser.java:608)
at javassist.compiler.Parser.parseStatement(Parser.java:295)
at javassist.compiler.Parser.parseBlock(Parser.java:307)
at javassist.compiler.Parser.parseStatement(Parser.java:261)
at javassist.compiler.Javac.compileBody(Javac.java:219)
at javassist.CtBehavior.setBody(CtBehavior.java:466)