kongdexi@kongdexideMac-mini ~ % cd AndroidStudioProjects/自动化测试/AppCrawler kongdexi@kongdexideMac-mini AppCrawler % java -jar appcrawler-2.7.0-hogwarts.jar -c demo.yaml -t 60 WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. 2021-11-18 14:04:36 INFO [AppCrawler$.78.main] ------------------------------------------------- appcrawler v2.7.0 全平台自动遍历测试工具 Q&A: https://ceshiren.com/c/opensource/appcrawler author: 思寒 seveniruby@霍格沃兹测试开发学社 ------------------------------------------------- 2021-11-18 14:04:36 INFO [AppCrawler$.191.parseParams] Find Conf /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/demo.yaml 2021-11-18 14:04:36 INFO [AppCrawler$.220.parseParams] use appium in the config file http://127.0.0.1:4723/wd/hub 2021-11-18 14:04:36 INFO [AppCrawler$.233.parseParams] use conf in config file 2021-11-18 14:04:36 INFO [AppCrawler$.332.addLogFile] ------------------------------------------------- appcrawler v2.7.0 全平台自动遍历测试工具 Q&A: https://ceshiren.com/c/opensource/appcrawler author: 思寒 seveniruby@霍格沃兹测试开发学社 ------------------------------------------------- 2021-11-18 14:04:36 INFO [AppCrawler$.335.addLogFile] result directory = quality_report 2021-11-18 14:04:36 DEBUG [AppCrawler$.54.getGlobalEncoding] default Charset=UTF-8 2021-11-18 14:04:36 DEBUG [AppCrawler$.55.getGlobalEncoding] default file.encoding=UTF-8 2021-11-18 14:04:36 DEBUG [AppCrawler$.56.getGlobalEncoding] project directory=/Users/kongdexi/AndroidStudioProjects/%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95 2021-11-18 14:04:36 DEBUG [Crawler.124.start] crawl config 2021-11-18 14:04:36 DEBUG [Crawler.125.start] --- maxTimeDescription: "最大运行时间" maxTime: 60 maxDepthDescription: "默认的最大深度10, 结合baseUrl可很好的控制遍历的范围" maxDepth: 10 capabilityDescription: "appium的capability通用配置,其中automationName代表自动化的驱动引擎,除了支持appium的\ 所有引擎外,额外增加了adb和selenium的支持" capability: deviceName: "oppo" appActivity: ".ui.start.SplashActivity" platformVersion: "" platformName: "Android" dontStopAppOnReset: "true" app: "" appPackage: "com.jlpay.merch" fullReset: "false" appium: "http://127.0.0.1:4723/wd/hub" autoGrantPermissions: "true" autoLaunch: "true" noReset: "true" testcaseDescription: "测试用例设置,用于遍历开始之前的一些前置操作,比如自动登录" testcase: name: "TesterHome AppCrawler" steps: - given: [] when: null then: [] xpath: "//android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button'\ \ and @text='同意' and @class='android.widget.Button']" action: "click" actions: [] times: -1 - given: [] when: null then: [] xpath: "/*/*" action: "Thread.sleep(3000)" actions: [] times: 1 - given: [] when: null then: [] xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_account']" action: "84944037011A00O" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_password']" action: "123456Aa" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='com.jlpay.merch:id/btn_login']" action: "click" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='com.jlpay.merch:id/btn_confirm']" action: "click" 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 - given: [] when: null then: [] xpath: "//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and\ \ contains(@text,'使用时允许')]" action: "click" actions: [] times: 3 - given: [] when: null then: [] xpath: "好" action: "click" actions: [] times: 3 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: "//*[contains(name(), 'CheckBox')and @clickable='true']" action: "" actions: [] times: -1 blackListDescription: "黑名单列表 matches风格, 默认排除内容包含2个数字的控件" blackList: - given: [] when: null then: [] xpath: "//*[contains(@resource-id,'btn_select_contact')]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(@resource-id, \"tv_set_postscript\")]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "分享至微信" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "拍照" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "相机" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "解绑" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: ".*home" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "删除" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "发送验证码" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "从相册选取" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "取消注销" 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 - given: [] when: null then: [] xpath: "//*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')]" action: "" actions: [] times: -1 backButtonDescription: "后退按钮列表,默认在所有控件遍历完成后,才会最后点击后退按钮。目前具备了自动判断返回按钮的能力,默认不需要配置" backButton: - given: [] when: null then: [] xpath: "//*[contains(@resource-id, \"im_back\")]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(@resource-id, \"im_web_back\")]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[contains(@text,'返回')]" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='android:id/up']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='android:id/home']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@resource-id='android:id/action_bar_title']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@name='nav_icon_back']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@name='Back']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//*[@name='返回']" action: "" actions: [] times: -1 - given: [] when: null then: [] xpath: "//android.widget.TextView[@content-desc=\"取消\"]" 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: - "LeakLauncherActivity" - "PostscriptSettingActivity" urlWhiteListDescription: "url白名单,仅在这些界面内遍历" urlWhiteList: - "com.jlpay.merch" beforeStartWaitDescription: "启动一个app默认等待的时间" beforeStartWait: 6000 beforeRestart: [] beforeElementDescription: "在遍历每个控件之前默认执行的动作" beforeElement: [] afterElementDescription: "在遍历每个控件之后默认执行的动作" afterElement: [] afterElementWaitDescription: "在遍历每个控件之后默认等待的时间,用于等待新页面加载" afterElementWait: 500 afterAllDescription: "在遍历完当前页面内的所有控件后,是否需要刷新或者滑动" afterAll: [] afterAllMaxDescription: "afterAll的最大重试次数,比如连续滑动2次都没新元素即取消" afterAllMax: 3 tagLimitMaxDescription: "相似控件最多点击几次" tagLimitMax: 20 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 assertGlobalDescription: "全局断言" assertGlobal: [] suiteNameDescription: "报告中的测试套件名字可以由列表内的控件内容替换,增强报告中关键界面的辨识度" suiteName: - "//*[@selected='true']//android.widget.TextView/@text" screenshotDescription: "是否截图" screenshot: true reportTitleDescription: "报告的title" reportTitle: "嘉联支付App测试报告" resultDirDescription: "结果目录,如果为空会自动创建对应时间戳_报名的结果目录" resultDir: "quality_report" showCancelDescription: "是否展示跳过的控件记录" showCancel: true pluginListDescription: "插件列表,暂时禁用,太高级了,很多人不会用" Description: "。在selectedList firstList lastList等很多配置中,需要填充的是测试步骤Step类型。Step类型由given(\ 满足条件)when(条件满足的行为)then(断言)三部分组成。Step可以简化为xpath(定位表达式,支持xpath 正则 包含关系)与action(点击\ \ 输入等行为)。" pluginList: [] 2021-11-18 14:04:36 INFO [Crawler.127.start] set xpath attribute with List(name(), name, label, value, resource-id, content-desc, text, id, name, innerText, tag, class) 2021-11-18 14:04:36 INFO [Crawler.101.$anonfun$loadPlugins$4] com.ceshiren.appcrawler.plugin.TagLimitPlugin@49c8f6e8 2021-11-18 14:04:36 INFO [Crawler.101.$anonfun$loadPlugins$4] com.ceshiren.appcrawler.plugin.ReportPlugin@6b0615ae 2021-11-18 14:04:36 INFO [Crawler.101.$anonfun$loadPlugins$4] com.ceshiren.appcrawler.plugin.FreeMind@4e73b552 2021-11-18 14:04:36 INFO [Plugin.23.init] com.ceshiren.appcrawler.plugin.TagLimitPlugin init 2021-11-18 14:04:36 INFO [Plugin.23.init] com.ceshiren.appcrawler.plugin.ReportPlugin init 2021-11-18 14:04:36 INFO [Plugin.23.init] com.ceshiren.appcrawler.plugin.FreeMind init 2021-11-18 14:04:36 INFO [ReportFactory$.33.initReportPath] reportPath=/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report 2021-11-18 14:04:36 INFO [ReportFactory$.35.initReportPath] testcaseDir=/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:04:36 INFO [Crawler.134.start] prepare setup Appium 2021-11-18 14:04:36 INFO [Crawler.270.setupAppium] afterAllMax=3 2021-11-18 14:04:37 INFO [Crawler.276.setupAppium] 2021-11-18 14:04:37 INFO [Crawler.312.setupAppium] use AppiumClient 2021-11-18 14:04:37 INFO [Crawler.313.setupAppium] HashMap(deviceName -> oppo, appActivity -> .ui.start.SplashActivity, platformVersion -> , platformName -> Android, dontStopAppOnReset -> true, app -> , appPackage -> com.jlpay.merch, fullReset -> false, appium -> http://127.0.0.1:4723/wd/hub, autoGrantPermissions -> true, autoLaunch -> true, noReset -> true) 2021-11-18 14:04:37 INFO [AppiumClient.45.] Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: Android, platformVersion: } 11月 18, 2021 2:04:43 下午 io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0 信息: Detected dialect: W3C 2021-11-18 14:04:43 INFO [SeleniumDriver.59.getDeviceInfo] screenWidth=1080 screenHeight=2288 2021-11-18 14:04:43 INFO [AppiumClient.76.] capture dir = /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/. 2021-11-18 14:04:43 INFO [Crawler.317.setupAppium] com.ceshiren.appcrawler.driver.AppiumClient@6d421fe 2021-11-18 14:04:43 INFO [Crawler.143.start] platformName= driver=com.ceshiren.appcrawler.driver.AppiumClient@6d421fe 2021-11-18 14:04:43 INFO [Crawler.144.start] ------------------------------------------------- appcrawler v2.7.0 全平台自动遍历测试工具 Q&A: https://ceshiren.com/c/opensource/appcrawler author: 思寒 seveniruby@霍格沃兹测试开发学社 ------------------------------------------------- 2021-11-18 14:04:43 INFO [Crawler.145.start] waiting for app load 2021-11-18 14:04:49 INFO [Crawler.147.start] driver=null 2021-11-18 14:04:49 INFO [Crawler.148.start] get screen info 2021-11-18 14:04:49 INFO [SeleniumDriver.59.getDeviceInfo] screenWidth=1080 screenHeight=2288 2021-11-18 14:04:49 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:04:49 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:04:49 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:04:49 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:04:49 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:04:49 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.SplashActivity 2021-11-18 14:04:50 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.SplashActivity) 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.699.parsePageContext] currentContentHash=762cf1caba6860f49a8f99cf9ba54083 lastContentHash=762cf1caba6860f49a8f99cf9ba54083 2021-11-18 14:04:50 INFO [DataRecord.25.isDiff] just only record return false 2021-11-18 14:04:50 INFO [Crawler.703.parsePageContext] ui not change 2021-11-18 14:04:50 INFO [Crawler.228.firstRefresh] first refresh 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start 2021-11-18 14:04:50 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:04:50 INFO [Crawler.1018.doElementAction] current index = 0 2021-11-18 14:04:50 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:04:50 INFO [Crawler.1020.doElementAction] current action = _Start 2021-11-18 14:04:50 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start 2021-11-18 14:04:50 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.SplashActivity 2021-11-18 14:04:50 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:04:50 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start 2021-11-18 14:04:50 INFO [URIElementStore.67.saveReqHash] save reqHash to 0 2021-11-18 14:04:50 INFO [URIElementStore.83.saveReqDom] save reqDom to 0 2021-11-18 14:04:50 INFO [Crawler.1033.doElementAction] just log 2021-11-18 14:04:50 INFO [Crawler.1034.doElementAction] { "url" : "com.jlpay.merch.SplashActivity", "tag" : "Start", "className" : "android.widget.FrameLayout", "id" : "Start", "name" : "Start", "text" : "", "instance" : "", "depth" : "2", "valid" : "true", "selected" : "false", "xpath" : "//android.widget.FrameLayout[@class='android.widget.FrameLayout']", "ancestor" : "_hierarchy/android.widget.FrameLayout", "x" : 0, "y" : 672, "width" : 1080, "height" : 1168, "action" : "_Start" } 2021-11-18 14:04:50 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:04:50 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:04:50 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:04:50 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:04:50 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:04:50 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:04:50 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:50 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:04:50 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:51 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.SplashActivity 2021-11-18 14:04:51 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.SplashActivity) 2021-11-18 14:04:51 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:51 INFO [Crawler.699.parsePageContext] currentContentHash=762cf1caba6860f49a8f99cf9ba54083 lastContentHash=762cf1caba6860f49a8f99cf9ba54083 2021-11-18 14:04:51 INFO [Crawler.703.parsePageContext] ui not change 2021-11-18 14:04:51 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:04:51 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:04:51 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:04:51 INFO [ReactWebDriver.248.asyncTask] use time 0.674 seconds name=screenshot result=success 2021-11-18 14:04:51 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:04:51 INFO [Crawler.1174.saveDom] save to quality_report/0_com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start.clicked.xml 2021-11-18 14:04:51 INFO [URIElementStore.75.saveResHash] save resHash to 0 2021-11-18 14:04:51 INFO [URIElementStore.106.saveResImg] save resImg quality_report/0_com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start.clicked.png to 0 2021-11-18 14:04:51 INFO [URIElementStore.90.saveResDom] save resDom to 0 2021-11-18 14:04:51 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:04:51 INFO [Crawler.155.start] append current app name to appWhiteList 2021-11-18 14:04:51 INFO [Crawler.159.start] run steps 2021-11-18 14:04:51 INFO [Crawler.257.runSteps] run testcases AutomationSuite: 2021-11-18 14:04:51 INFO [AutomationSuite.16.beforeAll] beforeAll 2021-11-18 14:04:51 INFO [AutomationSuite.24.$anonfun$new$1] testcase start 2021-11-18 14:04:51 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "//android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button'\ \ and @text='同意' and @class='android.widget.Button']" action: "click" 2021-11-18 14:04:51 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:51 INFO [Crawler.714.beforeElementAction] Steps.tag=Button.depth=8.id=positive_button.text=同意 2021-11-18 14:04:51 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:04:51 INFO [Crawler.1018.doElementAction] current index = 1 2021-11-18 14:04:51 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button' and @text='同意' and @class='android.widget.Button'] 2021-11-18 14:04:51 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:04:51 INFO [Crawler.1021.doElementAction] current element = Steps.tag=Button.depth=8.id=positive_button.text=同意 2021-11-18 14:04:51 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:04:51 INFO [Crawler.1023.doElementAction] current tag path = content.ll_buttom.positive_button_hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button 2021-11-18 14:04:51 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=Button.depth=8.id=positive_button.text=同意 2021-11-18 14:04:51 INFO [URIElementStore.67.saveReqHash] save reqHash to 1 2021-11-18 14:04:51 INFO [URIElementStore.83.saveReqDom] save reqDom to 1 2021-11-18 14:04:51 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.click.png to 1 2021-11-18 14:04:51 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/0_com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start.clicked.png to quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.click.png 2021-11-18 14:04:51 INFO [SeleniumDriver.75.mark] read from quality_report/0_com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start.clicked.png 2021-11-18 14:04:52 INFO [SeleniumDriver.88.mark] write png quality_report/0_com.jlpay.merch.SplashActivity.tag=Start.depth=2.id=Start.name=Start.clicked.png 2021-11-18 14:04:52 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.click.png 2021-11-18 14:04:52 INFO [ReactWebDriver.248.asyncTask] use time 0.521 seconds name=mark result=success 2021-11-18 14:04:52 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:04:52 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=Button.depth=8.id=positive_button.text=同意 2021-11-18 14:04:52 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button' and @text='同意' and @class='android.widget.Button'] 2021-11-18 14:04:52 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:04:52 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:04:52 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:04:52 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:04:53 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:04:53 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:04:53 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:04:53 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:04:53 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.SplashActivity 2021-11-18 14:04:53 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.SplashActivity) 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 INFO [Crawler.699.parsePageContext] currentContentHash=aa0dcf1de2d49430b90c472c3c15cf46 lastContentHash=762cf1caba6860f49a8f99cf9ba54083 2021-11-18 14:04:53 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:04:53 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:04:53 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:04:53 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:04:53 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:04:53 INFO [Crawler.1174.saveDom] save to quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.clicked.xml 2021-11-18 14:04:53 INFO [URIElementStore.75.saveResHash] save resHash to 1 2021-11-18 14:04:53 INFO [URIElementStore.106.saveResImg] save resImg quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.clicked.png to 1 2021-11-18 14:04:53 INFO [URIElementStore.90.saveResDom] save resDom to 1 2021-11-18 14:04:53 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:04:53 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:04:53 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "/*/*" action: "Thread.sleep(3000)" 2021-11-18 14:04:53 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:04:53 INFO [Crawler.714.beforeElementAction] Steps.tag=FrameLayout.depth=2 2021-11-18 14:04:53 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:04:53 INFO [Crawler.1018.doElementAction] current index = 2 2021-11-18 14:04:53 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:04:53 INFO [Crawler.1020.doElementAction] current action = Thread.sleep(3000) 2021-11-18 14:04:53 INFO [Crawler.1021.doElementAction] current element = Steps.tag=FrameLayout.depth=2 2021-11-18 14:04:53 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:04:53 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:04:53 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=FrameLayout.depth=2 2021-11-18 14:04:53 INFO [URIElementStore.67.saveReqHash] save reqHash to 2 2021-11-18 14:04:53 INFO [URIElementStore.83.saveReqDom] save reqDom to 2 2021-11-18 14:04:53 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/2_Steps.tag=FrameLayout.depth=2.click.png to 2 2021-11-18 14:04:53 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.clicked.png to quality_report/2_Steps.tag=FrameLayout.depth=2.click.png 2021-11-18 14:04:53 INFO [SeleniumDriver.75.mark] read from quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.clicked.png 2021-11-18 14:04:53 INFO [SeleniumDriver.88.mark] write png quality_report/1_Steps.tag=Button.depth=8.id=positive_button.text=同意.clicked.png 2021-11-18 14:04:53 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/2_Steps.tag=FrameLayout.depth=2.click.png 2021-11-18 14:04:54 INFO [Crawler.1083.doElementAction] need input Thread.sleep(3000) 2021-11-18 14:04:54 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=FrameLayout.depth=2 2021-11-18 14:04:54 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:04:54 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:04:54 INFO [DynamicEval$.70.dsl] eval Thread.sleep(3000) 2021-11-18 14:04:54 DEBUG [DynamicEval$.88.eval] first import import sys.process._ val driver: com.ceshiren.appcrawler.driver.ReactWebDriver = com.ceshiren.appcrawler.driver.AppiumClient@6d421fe def crawl(depth: Int): Unit 2021-11-18 14:04:56 INFO [DynamicEval$.94.eval] Thread.sleep(3000) 2021-11-18 14:04:59 INFO [DynamicEval$.95.eval] Success 2021-11-18 14:04:59 INFO [DynamicEval$.96.eval] eval finish 2021-11-18 14:04:59 INFO [DynamicEval$.72.dsl] () 2021-11-18 14:04:59 INFO [ReactWebDriver.248.asyncTask] use time 5.063 seconds name=action result=success 2021-11-18 14:04:59 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:04:59 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:04:59 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:04:59 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:00 INFO [ReactWebDriver.248.asyncTask] use time 0.642 seconds name=getPageSource result=success 2021-11-18 14:05:00 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:00 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:00 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:00 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:00 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:00 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:00 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:00 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:00 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:00 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.LoginActivity 2021-11-18 14:05:00 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.LoginActivity, com.jlpay.merch.SplashActivity) 2021-11-18 14:05:00 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:00 INFO [Crawler.699.parsePageContext] currentContentHash=7d469a31d9197a9ef466a4b9f4be4caf lastContentHash=aa0dcf1de2d49430b90c472c3c15cf46 2021-11-18 14:05:00 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:00 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:00 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:00 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:01 ERROR [ReactWebDriver.277.handleException] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveScreen(Crawler.scala:1189) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:753) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:42) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:01 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:01 ERROR [ReactWebDriver.277.handleException] Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.screenshot(SeleniumDriver.scala:69) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveScreen$2(Crawler.scala:1192) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:01 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:01 ERROR [Crawler.1215.saveScreen] screenshot error 2021-11-18 14:05:01 ERROR [Crawler.1216.saveScreen] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:01 INFO [Crawler.1174.saveDom] save to quality_report/2_Steps.tag=FrameLayout.depth=2.clicked.xml 2021-11-18 14:05:01 INFO [URIElementStore.75.saveResHash] save resHash to 2 2021-11-18 14:05:01 INFO [URIElementStore.106.saveResImg] save resImg quality_report/2_Steps.tag=FrameLayout.depth=2.clicked.png to 2 2021-11-18 14:05:01 INFO [URIElementStore.90.saveResDom] save resDom to 2 2021-11-18 14:05:01 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:01 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:05:01 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_account']" action: "84944037011A00O" 2021-11-18 14:05:01 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:01 INFO [Crawler.714.beforeElementAction] Steps.tag=EditText.depth=11.id=et_login_account.text=商户号/手机号/登录名 2021-11-18 14:05:01 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:01 INFO [Crawler.1018.doElementAction] current index = 3 2021-11-18 14:05:01 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_account' and @class='android.widget.EditText'] 2021-11-18 14:05:01 INFO [Crawler.1020.doElementAction] current action = 84944037011A00O 2021-11-18 14:05:01 INFO [Crawler.1021.doElementAction] current element = Steps.tag=EditText.depth=11.id=et_login_account.text=商户号/手机号/登录名 2021-11-18 14:05:01 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:05:01 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.ll_login.ll_account.et_login_account_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.EditText 2021-11-18 14:05:01 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=EditText.depth=11.id=et_login_account.text=商户号/手机号/登录名 2021-11-18 14:05:01 INFO [URIElementStore.67.saveReqHash] save reqHash to 3 2021-11-18 14:05:01 INFO [URIElementStore.83.saveReqDom] save reqDom to 3 2021-11-18 14:05:01 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.click.png to 3 2021-11-18 14:05:01 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/2_Steps.tag=FrameLayout.depth=2.clicked.png to quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.click.png 2021-11-18 14:05:01 INFO [SeleniumDriver.75.mark] read from quality_report/2_Steps.tag=FrameLayout.depth=2.clicked.png 2021-11-18 14:05:01 ERROR [ReactWebDriver.277.handleException] javax.imageio.IIOException: Can't read input file! 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveElementScreenshot(Crawler.scala:1150) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.doElementAction(Crawler.scala:1028) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:41) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:01 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:01 ERROR [ReactWebDriver.277.handleException] Can't read input file! 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.mark(SeleniumDriver.scala:76) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveElementScreenshot$1(Crawler.scala:1150) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:01 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:01 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:01 INFO [Crawler.1083.doElementAction] need input 84944037011A00O 2021-11-18 14:05:01 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=EditText.depth=11.id=et_login_account.text=商户号/手机号/登录名 2021-11-18 14:05:01 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_account' and @class='android.widget.EditText'] 2021-11-18 14:05:01 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:01 DEBUG [Crawler.1119.$anonfun$doElementAction$3] input 84944037011A00O 2021-11-18 14:05:02 INFO [ReactWebDriver.248.asyncTask] use time 0.641 seconds name=action result=success 2021-11-18 14:05:02 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:02 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:02 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:02 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:02 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:02 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:02 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:02 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:02 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:02 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:02 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:02 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:02 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:02 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.LoginActivity 2021-11-18 14:05:02 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.LoginActivity, com.jlpay.merch.SplashActivity) 2021-11-18 14:05:02 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:02 INFO [Crawler.699.parsePageContext] currentContentHash=75cb075369aa1734ead28ba04c755363 lastContentHash=7d469a31d9197a9ef466a4b9f4be4caf 2021-11-18 14:05:02 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:02 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:03 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:03 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:03 ERROR [ReactWebDriver.277.handleException] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveScreen(Crawler.scala:1189) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:753) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:42) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:03 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:03 ERROR [ReactWebDriver.277.handleException] Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.screenshot(SeleniumDriver.scala:69) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveScreen$2(Crawler.scala:1192) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:03 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:03 ERROR [Crawler.1215.saveScreen] screenshot error 2021-11-18 14:05:03 ERROR [Crawler.1216.saveScreen] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:03 INFO [Crawler.1174.saveDom] save to quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.clicked.xml 2021-11-18 14:05:03 INFO [URIElementStore.75.saveResHash] save resHash to 3 2021-11-18 14:05:03 INFO [URIElementStore.106.saveResImg] save resImg quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.clicked.png to 3 2021-11-18 14:05:03 INFO [URIElementStore.90.saveResDom] save resDom to 3 2021-11-18 14:05:03 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:03 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:05:03 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "//*[@resource-id='com.jlpay.merch:id/et_login_password']" action: "123456Aa" 2021-11-18 14:05:03 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:03 INFO [Crawler.714.beforeElementAction] Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码 2021-11-18 14:05:03 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:03 INFO [Crawler.1018.doElementAction] current index = 4 2021-11-18 14:05:03 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_password' and @text='登录密码' and @class='android.widget.EditText'] 2021-11-18 14:05:03 INFO [Crawler.1020.doElementAction] current action = 123456Aa 2021-11-18 14:05:03 INFO [Crawler.1021.doElementAction] current element = Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码 2021-11-18 14:05:03 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:05:03 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.ll_login.ll_password.et_login_password_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.EditText 2021-11-18 14:05:03 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码 2021-11-18 14:05:03 INFO [URIElementStore.67.saveReqHash] save reqHash to 4 2021-11-18 14:05:03 INFO [URIElementStore.83.saveReqDom] save reqDom to 4 2021-11-18 14:05:03 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.click.png to 4 2021-11-18 14:05:03 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.clicked.png to quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.click.png 2021-11-18 14:05:03 INFO [SeleniumDriver.75.mark] read from quality_report/3_Steps.tag=EditText.depth=11.id=et_login_account.text=商户号手机号登录名.clicked.png 2021-11-18 14:05:03 ERROR [ReactWebDriver.277.handleException] javax.imageio.IIOException: Can't read input file! 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveElementScreenshot(Crawler.scala:1150) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.doElementAction(Crawler.scala:1028) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:41) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:03 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:03 ERROR [ReactWebDriver.277.handleException] Can't read input file! 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.mark(SeleniumDriver.scala:76) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveElementScreenshot$1(Crawler.scala:1150) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:03 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:03 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:03 INFO [Crawler.1083.doElementAction] need input 123456Aa 2021-11-18 14:05:03 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码 2021-11-18 14:05:03 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_password' and @text='登录密码' and @class='android.widget.EditText'] 2021-11-18 14:05:03 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:03 DEBUG [Crawler.1119.$anonfun$doElementAction$3] input 123456Aa 2021-11-18 14:05:04 INFO [ReactWebDriver.248.asyncTask] use time 0.591 seconds name=action result=success 2021-11-18 14:05:04 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:04 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:04 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:04 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:04 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:04 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:04 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:04 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:04 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:04 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:04 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:04 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:04 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:05 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.LoginActivity 2021-11-18 14:05:05 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.LoginActivity, com.jlpay.merch.SplashActivity) 2021-11-18 14:05:05 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:05 INFO [Crawler.699.parsePageContext] currentContentHash=2d89dd691e3e610d8f3b8adce023f8c6 lastContentHash=75cb075369aa1734ead28ba04c755363 2021-11-18 14:05:05 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:05 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:05 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:05 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:05 ERROR [ReactWebDriver.277.handleException] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveScreen(Crawler.scala:1189) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:753) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:42) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:05 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:05 ERROR [ReactWebDriver.277.handleException] Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.screenshot(SeleniumDriver.scala:69) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveScreen$2(Crawler.scala:1192) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:05 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:05 ERROR [Crawler.1215.saveScreen] screenshot error 2021-11-18 14:05:05 ERROR [Crawler.1216.saveScreen] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:05 INFO [Crawler.1174.saveDom] save to quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.clicked.xml 2021-11-18 14:05:05 INFO [URIElementStore.75.saveResHash] save resHash to 4 2021-11-18 14:05:05 INFO [URIElementStore.106.saveResImg] save resImg quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.clicked.png to 4 2021-11-18 14:05:05 INFO [URIElementStore.90.saveResDom] save resDom to 4 2021-11-18 14:05:05 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:05 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:05:05 INFO [ReportPlugin.46.needReport] read command from /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/request 2021-11-18 14:05:05 INFO [ReportPlugin.52.needReport] 2021-11-18 14:05:05 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "//*[@resource-id='com.jlpay.merch:id/btn_login']" action: "click" 2021-11-18 14:05:05 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:05 INFO [Crawler.714.beforeElementAction] Steps.tag=Button.depth=9.id=btn_login.text=登录 2021-11-18 14:05:05 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:05 INFO [Crawler.1018.doElementAction] current index = 5 2021-11-18 14:05:05 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_login' and @text='登录' and @class='android.widget.Button'] 2021-11-18 14:05:05 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:05 INFO [Crawler.1021.doElementAction] current element = Steps.tag=Button.depth=9.id=btn_login.text=登录 2021-11-18 14:05:05 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:05:05 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.btn_login_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button 2021-11-18 14:05:05 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=Button.depth=9.id=btn_login.text=登录 2021-11-18 14:05:05 INFO [URIElementStore.67.saveReqHash] save reqHash to 5 2021-11-18 14:05:05 INFO [URIElementStore.83.saveReqDom] save reqDom to 5 2021-11-18 14:05:05 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.click.png to 5 2021-11-18 14:05:05 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.clicked.png to quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.click.png 2021-11-18 14:05:05 INFO [SeleniumDriver.75.mark] read from quality_report/4_Steps.tag=EditText.depth=11.id=et_login_password.text=登录密码.clicked.png 2021-11-18 14:05:05 ERROR [ReactWebDriver.277.handleException] javax.imageio.IIOException: Can't read input file! 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveElementScreenshot(Crawler.scala:1150) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.doElementAction(Crawler.scala:1028) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:41) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:05 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:05 ERROR [ReactWebDriver.277.handleException] Can't read input file! 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.mark(SeleniumDriver.scala:76) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveElementScreenshot$1(Crawler.scala:1150) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:05 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:05 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:05 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:05 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=Button.depth=9.id=btn_login.text=登录 2021-11-18 14:05:05 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_login' and @text='登录' and @class='android.widget.Button'] 2021-11-18 14:05:05 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:05 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:05 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:05 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:06 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:06 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:06 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:06 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:06 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.LoginActivity 2021-11-18 14:05:06 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.LoginActivity, com.jlpay.merch.SplashActivity) 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 INFO [Crawler.699.parsePageContext] currentContentHash=76d1744cf615e34de7d09d6e27e82ec1 lastContentHash=2d89dd691e3e610d8f3b8adce023f8c6 2021-11-18 14:05:06 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:06 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:06 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:06 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:06 ERROR [ReactWebDriver.277.handleException] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveScreen(Crawler.scala:1189) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:753) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:42) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:06 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:06 ERROR [ReactWebDriver.277.handleException] Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.screenshot(SeleniumDriver.scala:69) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveScreen$2(Crawler.scala:1192) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:06 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:06 ERROR [Crawler.1215.saveScreen] screenshot error 2021-11-18 14:05:06 ERROR [Crawler.1216.saveScreen] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:06 INFO [Crawler.1174.saveDom] save to quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.clicked.xml 2021-11-18 14:05:06 INFO [URIElementStore.75.saveResHash] save resHash to 5 2021-11-18 14:05:06 INFO [URIElementStore.106.saveResImg] save resImg quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.clicked.png to 5 2021-11-18 14:05:06 INFO [URIElementStore.90.saveResDom] save resDom to 5 2021-11-18 14:05:06 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:06 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:05:06 INFO [AutomationSuite.31.$anonfun$new$2] --- given: empty: true traversableAgain: true xpath: "//*[@resource-id='com.jlpay.merch:id/btn_confirm']" action: "click" 2021-11-18 14:05:06 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:06 INFO [Crawler.714.beforeElementAction] Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续 2021-11-18 14:05:06 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:06 INFO [Crawler.1018.doElementAction] current index = 6 2021-11-18 14:05:06 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_confirm' and @text='同意并继续' and @class='android.widget.Button'] 2021-11-18 14:05:06 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:06 INFO [Crawler.1021.doElementAction] current element = Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续 2021-11-18 14:05:06 INFO [Crawler.1022.doElementAction] current url = Steps 2021-11-18 14:05:06 INFO [Crawler.1023.doElementAction] current tag path = content.btn_confirm_hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.Button 2021-11-18 14:05:06 INFO [Crawler.1024.doElementAction] current file name = Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续 2021-11-18 14:05:06 INFO [URIElementStore.67.saveReqHash] save reqHash to 6 2021-11-18 14:05:06 INFO [URIElementStore.83.saveReqDom] save reqDom to 6 2021-11-18 14:05:06 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.click.png to 6 2021-11-18 14:05:06 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.clicked.png to quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.click.png 2021-11-18 14:05:06 INFO [SeleniumDriver.75.mark] read from quality_report/5_Steps.tag=Button.depth=9.id=btn_login.text=登录.clicked.png 2021-11-18 14:05:06 ERROR [ReactWebDriver.277.handleException] javax.imageio.IIOException: Can't read input file! 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveElementScreenshot(Crawler.scala:1150) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.doElementAction(Crawler.scala:1028) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:41) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:06 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:06 ERROR [ReactWebDriver.277.handleException] Can't read input file! 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.mark(SeleniumDriver.scala:76) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveElementScreenshot$1(Crawler.scala:1150) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:06 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:06 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:06 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:06 INFO [ReactWebDriver.40.findElementByURI] find by uri element= Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续 2021-11-18 14:05:06 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_confirm' and @text='同意并继续' and @class='android.widget.Button'] 2021-11-18 14:05:06 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:06 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:07 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:07 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:07 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:07 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:07 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:07 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:07 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:07 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:07 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:07 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:07 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:07 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:07 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:07 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.LoginActivity 2021-11-18 14:05:07 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.LoginActivity, com.jlpay.merch.SplashActivity) 2021-11-18 14:05:07 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:07 INFO [Crawler.699.parsePageContext] currentContentHash=58241de41e2d78a2839d0878d21720b3 lastContentHash=76d1744cf615e34de7d09d6e27e82ec1 2021-11-18 14:05:07 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:07 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:07 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:07 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:07 ERROR [ReactWebDriver.277.handleException] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveScreen(Crawler.scala:1189) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.afterElementAction(Crawler.scala:753) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2(AutomationSuite.scala:42) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$2$adapted(AutomationSuite.scala:30) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.$anonfun$new$1(AutomationSuite.scala:30) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:22) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Transformer.apply(Transformer.scala:20) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike$$anon$1.apply(FunSuiteLike.scala:186) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture(TestSuite.scala:196) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.TestSuite.withFixture$(TestSuite.scala:195) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.withFixture(FunSuite.scala:1560) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.invokeWithFixture$1(FunSuiteLike.scala:184) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTest$1(FunSuiteLike.scala:196) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestImpl(Engine.scala:286) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest(FunSuiteLike.scala:196) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTest$(FunSuiteLike.scala:178) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTest(FunSuite.scala:1560) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$runTests$1(FunSuiteLike.scala:229) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:393) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.collection.immutable.List.foreach(List.scala:333) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:381) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:376) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runTestsImpl(Engine.scala:458) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests(FunSuiteLike.scala:229) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.runTests$(FunSuiteLike.scala:228) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.runTests(FunSuite.scala:1560) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run(Suite.scala:1124) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.run$(Suite.scala:1106) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.org$scalatest$FunSuiteLike$$super$run(FunSuite.scala:1560) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.$anonfun$run$1(FunSuiteLike.scala:233) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.SuperEngine.runImpl(Engine.scala:518) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run(FunSuiteLike.scala:233) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuiteLike.run$(FunSuiteLike.scala:232) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.org$scalatest$BeforeAndAfterAllConfigMap$$super$run(AutomationSuite.scala:12) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.liftedTree1$1(BeforeAndAfterAllConfigMap.scala:248) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run(BeforeAndAfterAllConfigMap.scala:245) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.BeforeAndAfterAllConfigMap.run$(BeforeAndAfterAllConfigMap.scala:242) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.AutomationSuite.run(AutomationSuite.scala:12) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute(Suite.scala:787) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.Suite.execute$(Suite.scala:728) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.scalatest.FunSuite.execute(FunSuite.scala:1560) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.runSteps(Crawler.scala:258) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:160) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:07 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:07 ERROR [ReactWebDriver.277.handleException] Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:45) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.screenshot(SeleniumDriver.scala:69) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveScreen$2(Crawler.scala:1192) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:07 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:07 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:07 ERROR [Crawler.1215.saveScreen] screenshot error 2021-11-18 14:05:07 ERROR [Crawler.1216.saveScreen] org.openqa.selenium.remote.ScreenshotException: Screen shot has been taken Build info: version: 'unknown', revision: 'unknown', time: 'unknown' System info: host: 'kongdexideMac-mini.local', ip: 'fe80:0:0:0:1cfc:495f:7891:5d00%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6', java.version: '11.0.13' Driver info: io.appium.java_client.android.AndroidDriver Capabilities {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, databaseEnabled: false, desired: {app: , appActivity: .ui.start.SplashActivity, appPackage: com.jlpay.merch, appium: http://127.0.0.1:4723/wd/hub, autoGrantPermissions: true, autoLaunch: true, deviceName: oppo, dontStopAppOnReset: true, fullReset: false, newCommandTimeout: 120, noReset: true, platformName: android, platformVersion: }, deviceApiLevel: 30, deviceManufacturer: OPPO, deviceModel: PDKM00, deviceName: NZKRMFZ9RSLRAQGY, deviceScreenDensity: 480, deviceScreenSize: 1080x2400, deviceUDID: NZKRMFZ9RSLRAQGY, dontStopAppOnReset: true, fullReset: false, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: true, newCommandTimeout: 120, noReset: true, pixelRatio: 3, platform: LINUX, platformName: Android, platformVersion: 11, statBarHeight: 112, takesScreenshot: true, viewportRect: {height: 2176, left: 0, top: 112, width: 1080}, warnings: {}, webStorageEnabled: false} Session ID: 5fe17ca0-1402-4662-852d-f0775ab7f140 2021-11-18 14:05:07 INFO [Crawler.1174.saveDom] save to quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.clicked.xml 2021-11-18 14:05:07 INFO [URIElementStore.75.saveResHash] save resHash to 6 2021-11-18 14:05:07 INFO [URIElementStore.106.saveResImg] save resImg quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.clicked.png to 6 2021-11-18 14:05:07 INFO [URIElementStore.90.saveResDom] save resDom to 6 2021-11-18 14:05:07 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:07 TRACE [TagLimitPlugin.76.afterElementAction] not contains 2021-11-18 14:05:07 INFO [AutomationSuite.75.$anonfun$new$1] finish run steps - run steps 2021-11-18 14:05:07 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:07 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:10 INFO [ReactWebDriver.248.asyncTask] use time 2.135 seconds name=getPageSource result=success 2021-11-18 14:05:10 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:10 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:10 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.MainActivity 2021-11-18 14:05:10 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.MainActivity) 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.699.parsePageContext] currentContentHash=bc6fc09e1796844311318f588bc14e4e lastContentHash=58241de41e2d78a2839d0878d21720b3 2021-11-18 14:05:10 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:10 INFO [Crawler.1284.handleCtrlC] add shutdown hook 2021-11-18 14:05:10 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:10 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:10 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:10 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:10 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:10 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:10 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:10 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:10 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:10 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:10 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:10 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.494.getAvailableElement] selected nodes size = 16 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:10 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:10 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 16 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=16 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content first show, need click 2021-11-18 14:05:10 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=16 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content first show, need click 2021-11-18 14:05:10 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content first show, need click 2021-11-18 14:05:10 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=16 2021-11-18 14:05:10 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:10 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:10 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:10 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 TRACE [Crawler.580.getAvailableElement] sorted nodes length=16 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:10 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:10 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:10 INFO [TagLimitPlugin.53.$anonfun$fixElementAction$2] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_smartTabLayout.content_tabs.custom_text_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.HorizontalScrollView/android.widget.LinearLayout/android.widget.TextView]=20 2021-11-18 14:05:10 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_viewpager.refreshLayout_content.rv_list.tv_test.iv_web_content_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.ImageView]=20 2021-11-18 14:05:10 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:10 INFO [Crawler.1018.doElementAction] current index = 7 2021-11-18 14:05:10 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_web_content' and @class='android.widget.ImageView'] 2021-11-18 14:05:10 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:10 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.MainActivity 2021-11-18 14:05:10 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.content.refreshLayout.home_viewpager.refreshLayout_content.rv_list.tv_test.iv_web_content_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.ImageView 2021-11-18 14:05:10 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 INFO [URIElementStore.67.saveReqHash] save reqHash to 7 2021-11-18 14:05:10 INFO [URIElementStore.83.saveReqDom] save reqDom to 7 2021-11-18 14:05:10 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.click.png to 7 2021-11-18 14:05:10 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.clicked.png to quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.click.png 2021-11-18 14:05:10 INFO [SeleniumDriver.75.mark] read from quality_report/6_Steps.tag=Button.depth=8.id=btn_confirm.text=同意并继续.clicked.png 2021-11-18 14:05:10 ERROR [ReactWebDriver.277.handleException] javax.imageio.IIOException: Can't read input file! 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.get(FutureTask.java:205) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.$anonfun$asyncTask$1(ReactWebDriver.scala:239) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver.asyncTask(ReactWebDriver.scala:230) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.saveElementScreenshot(Crawler.scala:1150) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.doElementAction(Crawler.scala:1028) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.crawl(Crawler.scala:996) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$crawlWithRetry$1(Crawler.scala:184) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.util.Try$.apply(Try.scala:210) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.crawlWithRetry(Crawler.scala:184) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.start(Crawler.scala:166) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.startCrawl(AppCrawler.scala:325) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.parseParams(AppCrawler.scala:292) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler$.main(AppCrawler.scala:83) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.AppCrawler.main(AppCrawler.scala) 2021-11-18 14:05:10 ERROR [ReactWebDriver.280.handleException] find more cause 2021-11-18 14:05:10 ERROR [ReactWebDriver.277.handleException] Can't read input file! 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.SeleniumDriver.mark(SeleniumDriver.scala:76) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.core.Crawler.$anonfun$saveElementScreenshot$1(Crawler.scala:1150) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] com.ceshiren.appcrawler.driver.ReactWebDriver$$anon$1.call(ReactWebDriver.scala:233) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 2021-11-18 14:05:10 ERROR [ReactWebDriver.278.$anonfun$handleException$1] java.base/java.lang.Thread.run(Thread.java:829) 2021-11-18 14:05:10 ERROR [ReactWebDriver.282.handleException] exception finish 2021-11-18 14:05:10 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:10 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:10 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_web_content' and @class='android.widget.ImageView'] 2021-11-18 14:05:10 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:10 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:10 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:10 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:11 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:11 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:11 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:11 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:11 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:11 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:11 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:11 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:11 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:11 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:11 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:11 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:11 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:11 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:11 INFO [Crawler.699.parsePageContext] currentContentHash=fc142836ec4614b4f0215775bd7dd19d lastContentHash=bc6fc09e1796844311318f588bc14e4e 2021-11-18 14:05:11 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:11 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:11 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:11 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:12 INFO [ReactWebDriver.248.asyncTask] use time 0.588 seconds name=screenshot result=success 2021-11-18 14:05:12 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:12 INFO [Crawler.1174.saveDom] save to quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.clicked.xml 2021-11-18 14:05:12 INFO [URIElementStore.75.saveResHash] save resHash to 7 2021-11-18 14:05:12 INFO [URIElementStore.106.saveResImg] save resImg quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.clicked.png to 7 2021-11-18 14:05:12 INFO [URIElementStore.90.saveResDom] save resDom to 7 2021-11-18 14:05:12 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:12 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_viewpager.refreshLayout_content.rv_list.tv_test.iv_web_content_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/androidx.viewpager.widget.ViewPager/android.view.ViewGroup/android.widget.RelativeLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.ImageView]=19 2021-11-18 14:05:12 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:12 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:12 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:12 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:12 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:12 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:12 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:12 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:12 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:12 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:12 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:12 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.WebviewActivity.tag=ImageView.depth=10.id=im_web_back 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 INFO [Crawler.494.getAvailableElement] selected nodes size = 1 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:12 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:12 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 1 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=0 2021-11-18 14:05:12 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=0 2021-11-18 14:05:12 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=0 2021-11-18 14:05:12 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:12 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:12 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:12 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 TRACE [Crawler.580.getAvailableElement] sorted nodes length=0 2021-11-18 14:05:12 INFO [Crawler.966.crawl] com.jlpay.merch.WebviewActivity all elements had be clicked 2021-11-18 14:05:12 INFO [Crawler.970.crawl] just start, maybe loading is slow ,so just wait 2021-11-18 14:05:12 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:12 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:12 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:12 INFO [Crawler.1018.doElementAction] current index = 8 2021-11-18 14:05:12 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:12 INFO [Crawler.1020.doElementAction] current action = _Log 2021-11-18 14:05:12 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:12 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.WebviewActivity 2021-11-18 14:05:12 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:05:12 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:12 INFO [URIElementStore.67.saveReqHash] save reqHash to 8 2021-11-18 14:05:12 INFO [URIElementStore.83.saveReqDom] save reqDom to 8 2021-11-18 14:05:12 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.click.png to 8 2021-11-18 14:05:12 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.clicked.png to quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.click.png 2021-11-18 14:05:12 INFO [SeleniumDriver.75.mark] read from quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.clicked.png 2021-11-18 14:05:12 INFO [SeleniumDriver.88.mark] write png quality_report/7_com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content.clicked.png 2021-11-18 14:05:12 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.click.png 2021-11-18 14:05:12 INFO [Crawler.1033.doElementAction] just log 2021-11-18 14:05:12 INFO [Crawler.1034.doElementAction] { "url" : "com.jlpay.merch.WebviewActivity", "tag" : "Log", "className" : "android.widget.FrameLayout", "id" : "Log", "name" : "Log", "text" : "", "instance" : "", "depth" : "2", "valid" : "true", "selected" : "false", "xpath" : "//android.widget.FrameLayout[@class='android.widget.FrameLayout']", "ancestor" : "_hierarchy/android.widget.FrameLayout", "x" : 0, "y" : 0, "width" : 1080, "height" : 2288, "action" : "_Log" } 2021-11-18 14:05:12 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:12 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:13 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:13 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:13 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:13 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:13 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:13 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:13 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:13 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:13 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:13 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:13 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:13 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:13 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:13 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:13 INFO [Crawler.699.parsePageContext] currentContentHash=fc142836ec4614b4f0215775bd7dd19d lastContentHash=fc142836ec4614b4f0215775bd7dd19d 2021-11-18 14:05:13 INFO [Crawler.703.parsePageContext] ui not change 2021-11-18 14:05:13 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:13 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:13 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:14 INFO [ReactWebDriver.248.asyncTask] use time 0.515 seconds name=screenshot result=success 2021-11-18 14:05:14 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:14 INFO [Crawler.1174.saveDom] save to quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.xml 2021-11-18 14:05:14 INFO [URIElementStore.75.saveResHash] save resHash to 8 2021-11-18 14:05:14 INFO [URIElementStore.106.saveResImg] save resImg quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png to 8 2021-11-18 14:05:14 INFO [URIElementStore.90.saveResDom] save resDom to 8 2021-11-18 14:05:14 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:14 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:14 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:14 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:14 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:14 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:14 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:14 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:14 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:14 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:14 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:14 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:14 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.WebviewActivity.tag=ImageView.depth=10.id=im_web_back 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.494.getAvailableElement] selected nodes size = 1 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:14 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:14 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 1 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=0 2021-11-18 14:05:14 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=0 2021-11-18 14:05:14 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=0 2021-11-18 14:05:14 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:14 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:14 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:14 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [Crawler.580.getAvailableElement] sorted nodes length=0 2021-11-18 14:05:14 INFO [Crawler.966.crawl] com.jlpay.merch.WebviewActivity all elements had be clicked 2021-11-18 14:05:14 INFO [Crawler.970.crawl] just start, maybe loading is slow ,so just wait 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:14 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:14 INFO [Crawler.1018.doElementAction] current index = 9 2021-11-18 14:05:14 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:14 INFO [Crawler.1020.doElementAction] current action = _Log 2021-11-18 14:05:14 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:14 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.WebviewActivity 2021-11-18 14:05:14 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:05:14 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log 2021-11-18 14:05:14 INFO [URIElementStore.83.saveReqDom] save reqDom to 9 2021-11-18 14:05:14 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png to quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.click.png 2021-11-18 14:05:14 INFO [SeleniumDriver.75.mark] read from quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png 2021-11-18 14:05:14 INFO [SeleniumDriver.88.mark] write png quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png 2021-11-18 14:05:14 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.click.png 2021-11-18 14:05:14 INFO [Crawler.1033.doElementAction] just log 2021-11-18 14:05:14 INFO [Crawler.1034.doElementAction] { "url" : "com.jlpay.merch.WebviewActivity", "tag" : "Log", "className" : "android.widget.FrameLayout", "id" : "Log", "name" : "Log", "text" : "", "instance" : "", "depth" : "2", "valid" : "true", "selected" : "false", "xpath" : "//android.widget.FrameLayout[@class='android.widget.FrameLayout']", "ancestor" : "_hierarchy/android.widget.FrameLayout", "x" : 0, "y" : 0, "width" : 1080, "height" : 2288, "action" : "_Log" } 2021-11-18 14:05:14 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:14 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:14 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:14 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:14 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:14 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:14 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:14 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:14 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:14 INFO [Crawler.699.parsePageContext] currentContentHash=fc142836ec4614b4f0215775bd7dd19d lastContentHash=fc142836ec4614b4f0215775bd7dd19d 2021-11-18 14:05:14 INFO [Crawler.703.parsePageContext] ui not change 2021-11-18 14:05:14 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:15 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:15 INFO [Crawler.1194.$anonfun$saveScreen$2] ui no change 2021-11-18 14:05:15 INFO [Crawler.1198.$anonfun$saveScreen$2] copy from pre image file quality_report/8_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png 2021-11-18 14:05:15 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:15 INFO [Crawler.1174.saveDom] save to quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.xml 2021-11-18 14:05:15 INFO [URIElementStore.90.saveResDom] save resDom to 9 2021-11-18 14:05:15 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:15 INFO [ReportPlugin.46.needReport] read command from /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/request 2021-11-18 14:05:15 INFO [ReportPlugin.52.needReport] 2021-11-18 14:05:15 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:15 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:15 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:15 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:15 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:15 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:15 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:15 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:15 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:15 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:15 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:15 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.WebviewActivity.tag=ImageView.depth=10.id=im_web_back 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 INFO [Crawler.494.getAvailableElement] selected nodes size = 1 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:15 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:15 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 1 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=0 2021-11-18 14:05:15 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=0 2021-11-18 14:05:15 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=0 2021-11-18 14:05:15 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:15 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:15 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:15 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [Crawler.580.getAvailableElement] sorted nodes length=0 2021-11-18 14:05:15 INFO [Crawler.966.crawl] com.jlpay.merch.WebviewActivity all elements had be clicked 2021-11-18 14:05:15 INFO [Crawler.857.getBackButton] go back 2021-11-18 14:05:15 TRACE [Crawler.859.getBackButton] ListBuffer(Step(List(),null,List(),//*[contains(@resource-id, "im_back")],null,List(),-1), Step(List(),null,List(),//*[contains(@resource-id, "im_web_back")],null,List(),-1), Step(List(),null,List(),//*[contains(@text,'返回')],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/up'],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/home'],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/action_bar_title'],null,List(),-1), Step(List(),null,List(),//*[@name='nav_icon_back'],null,List(),-1), Step(List(),null,List(),//*[@name='Back'],null,List(),-1), Step(List(),null,List(),//*[@name='返回'],null,List(),-1), Step(List(),null,List(),//android.widget.TextView[@content-desc="取消"],null,List(),-1)) 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:15 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:15 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:15 INFO [Crawler.1018.doElementAction] current index = 10 2021-11-18 14:05:15 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:15 INFO [Crawler.1020.doElementAction] current action = _Back 2021-11-18 14:05:15 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:15 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.WebviewActivity 2021-11-18 14:05:15 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:05:15 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:15 INFO [URIElementStore.67.saveReqHash] save reqHash to 10 2021-11-18 14:05:15 INFO [URIElementStore.83.saveReqDom] save reqDom to 10 2021-11-18 14:05:15 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.click.png to 10 2021-11-18 14:05:15 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png to quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.click.png 2021-11-18 14:05:15 INFO [SeleniumDriver.75.mark] read from quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png 2021-11-18 14:05:15 INFO [SeleniumDriver.88.mark] write png quality_report/9_com.jlpay.merch.WebviewActivity.tag=Log.depth=2.id=Log.name=Log.clicked.png 2021-11-18 14:05:15 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.click.png 2021-11-18 14:05:15 INFO [Crawler.1037.doElementAction] back 2021-11-18 14:05:15 WARN [Crawler.1232.back] two back action too close 2021-11-18 14:05:17 INFO [Crawler.1236.$anonfun$back$2] navigate back 2021-11-18 14:05:17 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:17 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:18 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:18 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:18 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:18 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:18 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:18 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:18 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:18 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:18 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:18 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:18 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:18 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.MainActivity 2021-11-18 14:05:18 DEBUG [Crawler.677.parsePageContext] pop urlStack 2021-11-18 14:05:18 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.MainActivity) 2021-11-18 14:05:18 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:18 INFO [Crawler.699.parsePageContext] currentContentHash=bc6fc09e1796844311318f588bc14e4e lastContentHash=fc142836ec4614b4f0215775bd7dd19d 2021-11-18 14:05:18 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:18 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:18 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:18 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:19 INFO [ReactWebDriver.248.asyncTask] use time 0.905 seconds name=screenshot result=success 2021-11-18 14:05:19 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:19 INFO [Crawler.1174.saveDom] save to quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.xml 2021-11-18 14:05:19 INFO [URIElementStore.75.saveResHash] save resHash to 10 2021-11-18 14:05:19 INFO [URIElementStore.106.saveResImg] save resImg quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png to 10 2021-11-18 14:05:19 INFO [URIElementStore.90.saveResDom] save resDom to 10 2021-11-18 14:05:19 INFO [Crawler.778.afterElementAction] backRetry=1 2021-11-18 14:05:19 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:19 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:19 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:19 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:19 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:19 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:19 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:19 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:19 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:19 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:19 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:19 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:19 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 INFO [Crawler.494.getAvailableElement] selected nodes size = 16 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:19 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:19 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 16 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=16 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv first show, need click 2021-11-18 14:05:19 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=14 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:19 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv first show, need click 2021-11-18 14:05:19 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=14 2021-11-18 14:05:19 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=18 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 TRACE [Crawler.580.getAvailableElement] sorted nodes length=14 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:19 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:19 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:19 INFO [TagLimitPlugin.53.$anonfun$fixElementAction$2] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_smartTabLayout.content_tabs.custom_text_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.HorizontalScrollView/android.widget.LinearLayout/android.widget.TextView]=20 2021-11-18 14:05:19 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.banner.head_iv_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.widget.LinearLayout/android.widget.ImageView]=20 2021-11-18 14:05:19 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:19 INFO [Crawler.1018.doElementAction] current index = 11 2021-11-18 14:05:19 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.ImageView[@resource-id='com.jlpay.merch:id/head_iv' and @class='android.widget.ImageView'] 2021-11-18 14:05:19 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:19 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.MainActivity 2021-11-18 14:05:19 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.banner.head_iv_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.widget.LinearLayout/android.widget.ImageView 2021-11-18 14:05:19 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 INFO [URIElementStore.67.saveReqHash] save reqHash to 11 2021-11-18 14:05:19 INFO [URIElementStore.83.saveReqDom] save reqDom to 11 2021-11-18 14:05:19 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.click.png to 11 2021-11-18 14:05:19 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png to quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.click.png 2021-11-18 14:05:19 INFO [SeleniumDriver.75.mark] read from quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png 2021-11-18 14:05:19 INFO [SeleniumDriver.88.mark] write png quality_report/10_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png 2021-11-18 14:05:19 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.click.png 2021-11-18 14:05:19 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:19 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:19 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.ImageView[@resource-id='com.jlpay.merch:id/head_iv' and @class='android.widget.ImageView'] 2021-11-18 14:05:19 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:19 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:20 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:20 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:20 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:20 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:20 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:20 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:20 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:20 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:20 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:20 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:20 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:20 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:20 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:20 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:20 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:20 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:20 INFO [Crawler.699.parsePageContext] currentContentHash=82b4ad1a3680e5fafc96356e0ac4eeba lastContentHash=bc6fc09e1796844311318f588bc14e4e 2021-11-18 14:05:20 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:20 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:21 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:21 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:21 INFO [ReactWebDriver.248.asyncTask] use time 0.592 seconds name=screenshot result=success 2021-11-18 14:05:21 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:21 INFO [Crawler.1174.saveDom] save to quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.clicked.xml 2021-11-18 14:05:21 INFO [URIElementStore.75.saveResHash] save resHash to 11 2021-11-18 14:05:21 INFO [URIElementStore.106.saveResImg] save resImg quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.clicked.png to 11 2021-11-18 14:05:21 INFO [URIElementStore.90.saveResDom] save resDom to 11 2021-11-18 14:05:21 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:21 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.banner.head_iv_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/androidx.viewpager.widget.ViewPager/android.widget.LinearLayout/android.widget.ImageView]=19 2021-11-18 14:05:21 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:21 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:21 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:21 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:21 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:21 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:21 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:21 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:21 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:21 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:21 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.WebviewActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:21 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.WebviewActivity.tag=ImageView.depth=10.id=im_web_back 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 INFO [Crawler.494.getAvailableElement] selected nodes size = 1 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:21 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:21 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 1 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=0 2021-11-18 14:05:21 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=0 2021-11-18 14:05:21 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=0 2021-11-18 14:05:21 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:21 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:21 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:21 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [Crawler.580.getAvailableElement] sorted nodes length=0 2021-11-18 14:05:21 INFO [Crawler.966.crawl] com.jlpay.merch.WebviewActivity all elements had be clicked 2021-11-18 14:05:21 INFO [Crawler.857.getBackButton] go back 2021-11-18 14:05:21 TRACE [Crawler.859.getBackButton] ListBuffer(Step(List(),null,List(),//*[contains(@resource-id, "im_back")],null,List(),-1), Step(List(),null,List(),//*[contains(@resource-id, "im_web_back")],null,List(),-1), Step(List(),null,List(),//*[contains(@text,'返回')],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/up'],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/home'],null,List(),-1), Step(List(),null,List(),//*[@resource-id='android:id/action_bar_title'],null,List(),-1), Step(List(),null,List(),//*[@name='nav_icon_back'],null,List(),-1), Step(List(),null,List(),//*[@name='Back'],null,List(),-1), Step(List(),null,List(),//*[@name='返回'],null,List(),-1), Step(List(),null,List(),//android.widget.TextView[@content-desc="取消"],null,List(),-1)) 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:21 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:21 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:21 INFO [Crawler.1018.doElementAction] current index = 12 2021-11-18 14:05:21 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:21 INFO [Crawler.1020.doElementAction] current action = _Back 2021-11-18 14:05:21 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:21 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.WebviewActivity 2021-11-18 14:05:21 INFO [Crawler.1023.doElementAction] current tag path = _hierarchy/android.widget.FrameLayout 2021-11-18 14:05:21 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back 2021-11-18 14:05:21 INFO [URIElementStore.83.saveReqDom] save reqDom to 12 2021-11-18 14:05:21 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.clicked.png to quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.click.png 2021-11-18 14:05:21 INFO [SeleniumDriver.75.mark] read from quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.clicked.png 2021-11-18 14:05:21 INFO [SeleniumDriver.88.mark] write png quality_report/11_com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv.clicked.png 2021-11-18 14:05:21 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.click.png 2021-11-18 14:05:21 INFO [Crawler.1037.doElementAction] back 2021-11-18 14:05:21 WARN [Crawler.1232.back] two back action too close 2021-11-18 14:05:23 INFO [Crawler.1236.$anonfun$back$2] navigate back 2021-11-18 14:05:24 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:24 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:24 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:24 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:24 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:24 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:24 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:24 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:24 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:24 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:24 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:24 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:24 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:25 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.MainActivity 2021-11-18 14:05:25 DEBUG [Crawler.677.parsePageContext] pop urlStack 2021-11-18 14:05:25 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.MainActivity) 2021-11-18 14:05:25 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:25 INFO [Crawler.699.parsePageContext] currentContentHash=bc6fc09e1796844311318f588bc14e4e lastContentHash=82b4ad1a3680e5fafc96356e0ac4eeba 2021-11-18 14:05:25 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:25 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:25 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:25 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:26 INFO [ReactWebDriver.248.asyncTask] use time 0.931 seconds name=screenshot result=success 2021-11-18 14:05:26 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:26 INFO [Crawler.1174.saveDom] save to quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.xml 2021-11-18 14:05:26 INFO [URIElementStore.90.saveResDom] save resDom to 12 2021-11-18 14:05:26 INFO [Crawler.778.afterElementAction] backRetry=1 2021-11-18 14:05:26 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:26 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:26 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:26 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:26 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:26 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:26 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:26 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:26 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:26 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:26 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:26 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=18.id=head_iv 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:26 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.MainActivity.tag=ImageView.depth=17.id=iv_web_content 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 INFO [Crawler.494.getAvailableElement] selected nodes size = 16 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:26 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:26 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 16 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=16 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:26 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=13 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 first show, need click 2021-11-18 14:05:26 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg first show, need click 2021-11-18 14:05:26 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=13 2021-11-18 14:05:26 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=17 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=11 selected=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg list=false e=com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 list=false e=com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=16 selected=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 list=false e=com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.569.$anonfun$getAvailableElement$21] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 TRACE [Crawler.580.getAvailableElement] sorted nodes length=13 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=统计 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_symbol.text=¥ 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=tv_deal_amount.text=0.00 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=tv_collect.text=收款 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=11.id=title.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=ImageView.depth=11.id=iv_msg 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_home.text=嘉联支付 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=RadioButton.depth=10.id=rb_mine.text=我的 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=智慧经营 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=官方消息 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=商家故事 2021-11-18 14:05:26 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.MainActivity.tag=TextView.depth=16.id=custom_text.text=行业聚焦 2021-11-18 14:05:26 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:26 INFO [TagLimitPlugin.53.$anonfun$fixElementAction$2] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_smartTabLayout.content_tabs.custom_text_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.HorizontalScrollView/android.widget.LinearLayout/android.widget.TextView]=20 2021-11-18 14:05:26 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.rl_bill_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=20 2021-11-18 14:05:26 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:26 INFO [Crawler.1018.doElementAction] current index = 13 2021-11-18 14:05:26 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.TextView[@text='账单' and @class='android.widget.TextView'] 2021-11-18 14:05:26 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:26 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.MainActivity 2021-11-18 14:05:26 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.rl_bill_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView 2021-11-18 14:05:26 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 INFO [URIElementStore.67.saveReqHash] save reqHash to 13 2021-11-18 14:05:26 INFO [URIElementStore.83.saveReqDom] save reqDom to 13 2021-11-18 14:05:26 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.click.png to 13 2021-11-18 14:05:26 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png to quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.click.png 2021-11-18 14:05:26 INFO [SeleniumDriver.75.mark] read from quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png 2021-11-18 14:05:26 INFO [SeleniumDriver.88.mark] write png quality_report/12_com.jlpay.merch.WebviewActivity.tag=Back.depth=2.id=Back.name=Back.clicked.png 2021-11-18 14:05:26 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.click.png 2021-11-18 14:05:26 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:26 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单 2021-11-18 14:05:26 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.TextView[@text='账单' and @class='android.widget.TextView'] 2021-11-18 14:05:26 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:26 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:26 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:26 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:27 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:27 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:27 INFO [ReactWebDriver.248.asyncTask] use time 0.787 seconds name=getPageSource result=success 2021-11-18 14:05:27 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:27 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:27 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:27 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:27 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:27 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:27 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:27 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:27 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.BillActivity 2021-11-18 14:05:28 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 INFO [Crawler.699.parsePageContext] currentContentHash=b640ad018cd1b149593b3b76c799925b lastContentHash=bc6fc09e1796844311318f588bc14e4e 2021-11-18 14:05:28 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:28 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:28 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:28 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:28 INFO [ReactWebDriver.248.asyncTask] use time 0.568 seconds name=screenshot result=success 2021-11-18 14:05:28 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:28 INFO [Crawler.1174.saveDom] save to quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.clicked.xml 2021-11-18 14:05:28 INFO [URIElementStore.75.saveResHash] save resHash to 13 2021-11-18 14:05:28 INFO [URIElementStore.106.saveResImg] save resImg quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.clicked.png to 13 2021-11-18 14:05:28 INFO [URIElementStore.90.saveResDom] save resDom to 13 2021-11-18 14:05:28 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:28 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.MainActivityaction_bar_root.content.content.refreshLayout.home_appbar.ll_header_layout.rl_bill_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/android.view.ViewGroup/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=19 2021-11-18 14:05:28 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:28 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:28 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:28 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:28 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:28 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:28 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:28 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:28 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:28 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:28 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:28 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=ImageView.depth=9.id=im_back 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 INFO [Crawler.494.getAvailableElement] selected nodes size = 6 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:28 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:28 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 6 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=5 2021-11-18 14:05:28 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:28 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=5 2021-11-18 14:05:28 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:28 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:28 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=5 2021-11-18 14:05:28 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 TRACE [Crawler.580.getAvailableElement] sorted nodes length=5 2021-11-18 14:05:28 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:28 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:28 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:28 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:28 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:28 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_1.tv_choose_1_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=20 2021-11-18 14:05:28 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:28 INFO [Crawler.1018.doElementAction] current index = 14 2021-11-18 14:05:28 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_1' and @text='今天' and @class='android.widget.TextView'] 2021-11-18 14:05:28 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:28 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.BillActivity 2021-11-18 14:05:28 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.ll_tabs.rl_choose_1.tv_choose_1_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView 2021-11-18 14:05:28 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 INFO [URIElementStore.67.saveReqHash] save reqHash to 14 2021-11-18 14:05:28 INFO [URIElementStore.83.saveReqDom] save reqDom to 14 2021-11-18 14:05:28 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.click.png to 14 2021-11-18 14:05:28 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.clicked.png to quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.click.png 2021-11-18 14:05:28 INFO [SeleniumDriver.75.mark] read from quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.clicked.png 2021-11-18 14:05:28 INFO [SeleniumDriver.88.mark] write png quality_report/13_com.jlpay.merch.MainActivity.tag=TextView.depth=17.text=账单.clicked.png 2021-11-18 14:05:28 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.click.png 2021-11-18 14:05:28 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:28 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:28 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_1' and @text='今天' and @class='android.widget.TextView'] 2021-11-18 14:05:29 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:29 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:29 INFO [ReactWebDriver.248.asyncTask] use time 0.874 seconds name=action result=success 2021-11-18 14:05:29 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:29 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:30 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:30 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:30 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:30 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:30 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:30 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:30 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:30 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:30 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:30 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:30 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:30 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.BillActivity 2021-11-18 14:05:30 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:30 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:30 INFO [Crawler.699.parsePageContext] currentContentHash=b640ad018cd1b149593b3b76c799925b lastContentHash=b640ad018cd1b149593b3b76c799925b 2021-11-18 14:05:30 INFO [Crawler.703.parsePageContext] ui not change 2021-11-18 14:05:30 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:30 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:30 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:31 INFO [ReactWebDriver.248.asyncTask] use time 0.6 seconds name=screenshot result=success 2021-11-18 14:05:31 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:31 INFO [Crawler.1174.saveDom] save to quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.clicked.xml 2021-11-18 14:05:31 INFO [URIElementStore.75.saveResHash] save resHash to 14 2021-11-18 14:05:31 INFO [URIElementStore.106.saveResImg] save resImg quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.clicked.png to 14 2021-11-18 14:05:31 INFO [URIElementStore.90.saveResDom] save resDom to 14 2021-11-18 14:05:31 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:31 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_1.tv_choose_1_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=19 2021-11-18 14:05:31 INFO [ReportPlugin.46.needReport] read command from /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/request 2021-11-18 14:05:31 INFO [ReportPlugin.52.needReport] 2021-11-18 14:05:31 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:31 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:31 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:31 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:31 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:31 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:31 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:31 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:31 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:31 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:31 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:31 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=ImageView.depth=9.id=im_back 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 INFO [Crawler.494.getAvailableElement] selected nodes size = 6 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:31 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:31 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 6 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=5 2021-11-18 14:05:31 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:31 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:31 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=4 2021-11-18 14:05:31 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:31 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:31 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=4 2021-11-18 14:05:31 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 TRACE [Crawler.580.getAvailableElement] sorted nodes length=4 2021-11-18 14:05:31 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:31 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:31 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:31 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:31 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_2.tv_choose_2_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=20 2021-11-18 14:05:31 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:31 INFO [Crawler.1018.doElementAction] current index = 15 2021-11-18 14:05:31 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_2' and @text='近1周' and @class='android.widget.TextView'] 2021-11-18 14:05:31 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:31 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.BillActivity 2021-11-18 14:05:31 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.ll_tabs.rl_choose_2.tv_choose_2_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView 2021-11-18 14:05:31 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 INFO [URIElementStore.67.saveReqHash] save reqHash to 15 2021-11-18 14:05:31 INFO [URIElementStore.83.saveReqDom] save reqDom to 15 2021-11-18 14:05:31 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.click.png to 15 2021-11-18 14:05:31 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.clicked.png to quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.click.png 2021-11-18 14:05:31 INFO [SeleniumDriver.75.mark] read from quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.clicked.png 2021-11-18 14:05:31 INFO [SeleniumDriver.88.mark] write png quality_report/14_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天.clicked.png 2021-11-18 14:05:31 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.click.png 2021-11-18 14:05:31 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:31 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:31 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_2' and @text='近1周' and @class='android.widget.TextView'] 2021-11-18 14:05:31 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:31 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:32 INFO [ReactWebDriver.248.asyncTask] use time 0.959 seconds name=action result=success 2021-11-18 14:05:32 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:32 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:33 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:33 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:33 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:33 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:33 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:33 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:33 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:33 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:33 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:33 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:33 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:33 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.BillActivity 2021-11-18 14:05:33 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:33 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:33 INFO [Crawler.699.parsePageContext] currentContentHash=1d7a2e7e76c4a35fcfff9a1dfa231f25 lastContentHash=b640ad018cd1b149593b3b76c799925b 2021-11-18 14:05:33 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:33 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:33 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:33 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:34 INFO [ReactWebDriver.248.asyncTask] use time 0.631 seconds name=screenshot result=success 2021-11-18 14:05:34 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:34 INFO [Crawler.1174.saveDom] save to quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.clicked.xml 2021-11-18 14:05:34 INFO [URIElementStore.75.saveResHash] save resHash to 15 2021-11-18 14:05:34 INFO [URIElementStore.106.saveResImg] save resImg quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.clicked.png to 15 2021-11-18 14:05:34 INFO [URIElementStore.90.saveResDom] save resDom to 15 2021-11-18 14:05:34 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:34 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_2.tv_choose_2_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=19 2021-11-18 14:05:34 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:34 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:34 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:34 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:34 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:34 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:34 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:34 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:34 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:34 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:34 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:34 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=ImageView.depth=9.id=im_back 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 INFO [Crawler.494.getAvailableElement] selected nodes size = 6 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:34 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:34 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 6 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=5 2021-11-18 14:05:34 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:34 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:34 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:34 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:34 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:34 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=3 2021-11-18 14:05:34 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:34 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 first show, need click 2021-11-18 14:05:34 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:34 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=3 2021-11-18 14:05:34 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 TRACE [Crawler.580.getAvailableElement] sorted nodes length=3 2021-11-18 14:05:34 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:34 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:34 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:34 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_3.tv_choose_3_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=20 2021-11-18 14:05:34 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:34 INFO [Crawler.1018.doElementAction] current index = 16 2021-11-18 14:05:34 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_3' and @text='近1月' and @class='android.widget.TextView'] 2021-11-18 14:05:34 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:34 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.BillActivity 2021-11-18 14:05:34 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.ll_tabs.rl_choose_3.tv_choose_3_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView 2021-11-18 14:05:34 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 INFO [URIElementStore.67.saveReqHash] save reqHash to 16 2021-11-18 14:05:34 INFO [URIElementStore.83.saveReqDom] save reqDom to 16 2021-11-18 14:05:34 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.click.png to 16 2021-11-18 14:05:34 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.clicked.png to quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.click.png 2021-11-18 14:05:34 INFO [SeleniumDriver.75.mark] read from quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.clicked.png 2021-11-18 14:05:34 INFO [SeleniumDriver.88.mark] write png quality_report/15_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周.clicked.png 2021-11-18 14:05:34 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.click.png 2021-11-18 14:05:34 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:34 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:34 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_3' and @text='近1月' and @class='android.widget.TextView'] 2021-11-18 14:05:34 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:34 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:35 INFO [ReactWebDriver.248.asyncTask] use time 1.113 seconds name=action result=success 2021-11-18 14:05:35 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:35 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:36 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:36 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:36 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:36 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:36 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:36 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:36 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:36 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:36 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:36 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:36 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:36 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.BillActivity 2021-11-18 14:05:36 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:36 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:36 INFO [Crawler.699.parsePageContext] currentContentHash=2a3036edd164004e06b1f553abff1a29 lastContentHash=1d7a2e7e76c4a35fcfff9a1dfa231f25 2021-11-18 14:05:36 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:36 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:36 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:36 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:37 INFO [ReactWebDriver.248.asyncTask] use time 0.644 seconds name=screenshot result=success 2021-11-18 14:05:37 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:37 INFO [Crawler.1174.saveDom] save to quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.clicked.xml 2021-11-18 14:05:37 INFO [URIElementStore.75.saveResHash] save resHash to 16 2021-11-18 14:05:37 INFO [URIElementStore.106.saveResImg] save resImg quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.clicked.png to 16 2021-11-18 14:05:37 INFO [URIElementStore.90.saveResDom] save resDom to 16 2021-11-18 14:05:37 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:37 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.ll_tabs.rl_choose_3.tv_choose_3_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.TextView]=19 2021-11-18 14:05:37 INFO [Crawler.924.crawl] crawl next 2021-11-18 14:05:37 FATAL [Crawler.385.needExitApp] maxTime out Quit need exit 2021-11-18 14:05:37 FATAL [Crawler.931.crawl] get signal to exit 2021-11-18 14:05:37 DEBUG [Crawler.941.crawl] refresh success 2021-11-18 14:05:37 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),permission_allow_button,,List(),3) 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger permission_allow_button 2021-11-18 14:05:37 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),允许,,List(),3) 2021-11-18 14:05:37 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 允许 2021-11-18 14:05:37 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),//*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')],click,List(),3) 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger //*[contains(@resource-id,'com.android.permissioncontroller:id/permission_allow_foreground_only_button')and contains(@text,'使用时允许')] 2021-11-18 14:05:37 DEBUG [Crawler.1251.$anonfun$getElementByTriggerActions$2] finding Step(List(),null,List(),好,click,List(),3) 2021-11-18 14:05:37 TRACE [Crawler.1260.$anonfun$getElementByTriggerActions$2] not found trigger 好 2021-11-18 14:05:37 DEBUG [Crawler.368.needBackToApp] ListBuffer(com.jlpay.merch) 2021-11-18 14:05:37 DEBUG [Crawler.369.needBackToApp] List(com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch, com.jlpay.merch) 2021-11-18 14:05:37 DEBUG [Crawler.420.needBackToPage] urlStack=Stack(com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) baseUrl=List() maxDepth=10 2021-11-18 14:05:37 TRACE [PageSource.31.demo] page source java demo 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Button')] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @clickable='true' and string-length(@text)<10] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Text') and string-length(@text)<10] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @clickable='true'] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=ImageView.depth=9.id=im_back 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[@clickable='true']/*[contains(name(), 'Image')] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.489.$anonfun$getAvailableElement$3] com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Image') and @name!=''] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'Text') and @name!='' and string-length(@label)<10] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.485.$anonfun$getAvailableElement$1] selectedList xpath = //*[contains(name(), 'CheckBox')and @clickable='true'] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 INFO [Crawler.494.getAvailableElement] selected nodes size = 7 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id,'btn_select_contact')] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = //*[contains(@resource-id, "tv_set_postscript")] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 分享至微信 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 拍照 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 相机 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 解绑 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = .*home 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 删除 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 发送验证码 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 从相册选取 2021-11-18 14:05:37 TRACE [Crawler.499.$anonfun$getAvailableElement$4] blackList xpath = 取消注销 2021-11-18 14:05:37 INFO [Crawler.507.getAvailableElement] selectedElements - black elements size = 7 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 INFO [Crawler.526.getAvailableElement] selectedElements - backButton size=6 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_1.text=今天 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_2.text=近1周 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.528.$anonfun$getAvailableElement$11] com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:37 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:37 DEBUG [URIElementStore.122.isClicked] element=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon first show, need click 2021-11-18 14:05:37 INFO [Crawler.534.getAvailableElement] selectedElements - clicked size=3 2021-11-18 14:05:37 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.536.$anonfun$getAvailableElement$13] com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right first show, need click 2021-11-18 14:05:37 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 first show, need click 2021-11-18 14:05:37 DEBUG [URIElementStore.131.isSkipped] element=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon first show, need click 2021-11-18 14:05:37 INFO [Crawler.541.getAvailableElement] selectedElements - skiped fresh elements size=3 2021-11-18 14:05:37 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by depth 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=14 selected=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon list=false e=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by list 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=14 selected=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon list=false e=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.622.$anonfun$sortByAttribute$1] sort by selected 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=14 selected=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon list=false e=com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=10 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.626.$anonfun$sortByAttribute$6] depth=9 selected=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right list=false e=com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/..//* 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[@selected='true']/../..//* 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.565.$anonfun$getAvailableElement$19] lastList xpath = //*[contains(@resource-id,'btn_loginout')and contains(@text,'退出登录')] 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 TRACE [Crawler.580.getAvailableElement] sorted nodes length=3 2021-11-18 14:05:37 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_4.text=筛选 2021-11-18 14:05:37 TRACE [Crawler.581.$anonfun$getAvailableElement$23] com.jlpay.merch.BillActivity.tag=TextView.depth=9.id=tv_right 2021-11-18 14:05:37 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:37 INFO [TagLimitPlugin.57.fixElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.refreshLayout.recyclerView.ll_head.rec_child.ll_head.ll_container.iv_icon_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView]=20 2021-11-18 14:05:37 INFO [Crawler.714.beforeElementAction] com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 TRACE [Crawler.720.beforeElementAction] beforeElementAction 2021-11-18 14:05:37 INFO [Crawler.1018.doElementAction] current index = 17 2021-11-18 14:05:37 INFO [Crawler.1019.doElementAction] current xpath = //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_icon' and @class='android.widget.ImageView'] 2021-11-18 14:05:37 INFO [Crawler.1020.doElementAction] current action = click 2021-11-18 14:05:37 INFO [Crawler.1021.doElementAction] current element = com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 INFO [Crawler.1022.doElementAction] current url = com.jlpay.merch.BillActivity 2021-11-18 14:05:37 INFO [Crawler.1023.doElementAction] current tag path = action_bar_root.content.refreshLayout.recyclerView.ll_head.rec_child.ll_head.ll_container.iv_icon_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView 2021-11-18 14:05:37 INFO [Crawler.1024.doElementAction] current file name = com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 INFO [URIElementStore.67.saveReqHash] save reqHash to 17 2021-11-18 14:05:37 INFO [URIElementStore.83.saveReqDom] save reqDom to 17 2021-11-18 14:05:37 INFO [URIElementStore.97.saveReqImg] save reqImg quality_report/17_com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon.click.png to 17 2021-11-18 14:05:37 INFO [Crawler.1148.saveElementScreenshot] mark quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.clicked.png to quality_report/17_com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon.click.png 2021-11-18 14:05:37 INFO [SeleniumDriver.75.mark] read from quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.clicked.png 2021-11-18 14:05:37 INFO [SeleniumDriver.88.mark] write png quality_report/16_com.jlpay.merch.BillActivity.tag=TextView.depth=10.id=tv_choose_3.text=近1月.clicked.png 2021-11-18 14:05:37 INFO [SeleniumDriver.101.mark] ImageIO.write newImageName quality_report/17_com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon.click.png 2021-11-18 14:05:37 INFO [Crawler.1083.doElementAction] need input click 2021-11-18 14:05:37 INFO [ReactWebDriver.40.findElementByURI] find by uri element= com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon 2021-11-18 14:05:37 INFO [AppiumClient.186.findElementsByURI] findElementsByXPath //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_icon' and @class='android.widget.ImageView'] 2021-11-18 14:05:37 INFO [ReactWebDriver.47.findElementByURI] find by xpath success 2021-11-18 14:05:37 INFO [Crawler.1102.$anonfun$doElementAction$3] click element 2021-11-18 14:05:37 INFO [Crawler.1132.doElementAction] afterAllRetry = 0 because of last action not equal to after 2021-11-18 14:05:37 INFO [Crawler.1136.doElementAction] sleep 500 ms 2021-11-18 14:05:38 INFO [Crawler.643.refreshPage] refresh page 2021-11-18 14:05:38 INFO [ReactWebDriver.93.getPageSourceWithRetry] start to get page source from appium 2021-11-18 14:05:38 INFO [ReactWebDriver.248.asyncTask] use time 0.642 seconds name=getPageSource result=success 2021-11-18 14:05:38 TRACE [ReactWebDriver.100.$anonfun$getPageSourceWithRetry$1] get raw page source success 2021-11-18 14:05:38 INFO [ReactWebDriver.115.$anonfun$getPageSourceWithRetry$1] xml format 2021-11-18 14:05:38 DEBUG [ReactWebDriver.130.$anonfun$getPageSourceWithRetry$1] get page source success 2021-11-18 14:05:38 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:38 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:38 INFO [Crawler.669.parsePageContext] appName = com.jlpay.merch 2021-11-18 14:05:38 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:38 INFO [Crawler.345.getUri] defineUrl= 2021-11-18 14:05:38 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:38 INFO [Crawler.673.parsePageContext] url=com.jlpay.merch.BillDetailActivity2 2021-11-18 14:05:38 TRACE [Crawler.689.parsePageContext] urlStack=Stack(com.jlpay.merch.BillDetailActivity2, com.jlpay.merch.BillActivity, com.jlpay.merch.MainActivity) 2021-11-18 14:05:38 TRACE [XPathUtil$.346.getNodeListByXPath] node list get 2021-11-18 14:05:38 INFO [Crawler.699.parsePageContext] currentContentHash=2d1ef29d926efeb9269b86ae066866a8 lastContentHash=2a3036edd164004e06b1f553abff1a29 2021-11-18 14:05:38 INFO [Crawler.701.parsePageContext] ui change 2021-11-18 14:05:38 INFO [Crawler.739.afterElementAction] mark image exist 2021-11-18 14:05:39 INFO [Crawler.1188.saveScreen] start screenshot 2021-11-18 14:05:39 INFO [Crawler.1191.$anonfun$saveScreen$2] ui change screenshot again 2021-11-18 14:05:39 INFO [ReactWebDriver.248.asyncTask] use time 0.608 seconds name=screenshot result=success 2021-11-18 14:05:39 INFO [Crawler.1212.saveScreen] screenshot success 2021-11-18 14:05:39 INFO [Crawler.1174.saveDom] save to quality_report/17_com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon.clicked.xml 2021-11-18 14:05:39 INFO [URIElementStore.75.saveResHash] save resHash to 17 2021-11-18 14:05:39 INFO [URIElementStore.106.saveResImg] save resImg quality_report/17_com.jlpay.merch.BillActivity.tag=ImageView.depth=14.id=iv_icon.clicked.png to 17 2021-11-18 14:05:39 INFO [URIElementStore.90.saveResDom] save resDom to 17 2021-11-18 14:05:39 INFO [Crawler.778.afterElementAction] backRetry=0 2021-11-18 14:05:39 INFO [TagLimitPlugin.74.afterElementAction] tagLimit[com.jlpay.merch.BillActivityaction_bar_root.content.refreshLayout.recyclerView.ll_head.rec_child.ll_head.ll_container.iv_icon_hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.view.ViewGroup/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/androidx.recyclerview.widget.RecyclerView/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView]=19 2021-11-18 14:05:39 FATAL [Crawler.921.crawl] exitCrawl=true, return 2021-11-18 14:05:39 INFO [Crawler.187.crawlWithRetry] crawl finish 2021-11-18 14:05:39 INFO [Crawler.1271.stop] ctrl c interval = 0 2021-11-18 14:05:39 INFO [Crawler.1159.saveLog] save log to quality_report/elements.yml 2021-11-18 14:05:39 INFO [ReportPlugin.78.generateReport] reportPath=/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report 2021-11-18 14:05:39 INFO [ScalaTestRuntime.15.genTestCase] save testcase 2021-11-18 14:05:39 INFO [ReportFactory$.33.initReportPath] reportPath=/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report 2021-11-18 14:05:39 INFO [ReportFactory$.35.initReportPath] testcaseDir=/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.jlpay.merch.MainActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.34.genTestCaseClass] classNameFormat=com.jlpay.merch.MainActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.50.genTestCaseClass] uri_$eq("com.jlpay.merch.MainActivity"); name_$eq("com.jlpay.merch.MainActivity"); 2021-11-18 14:05:39 DEBUG [SuiteToClass$.54.genTestCaseClass] write to /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class Steps 2021-11-18 14:05:39 TRACE [SuiteToClass$.34.genTestCaseClass] classNameFormat=Steps 2021-11-18 14:05:39 TRACE [SuiteToClass$.50.genTestCaseClass] uri_$eq("Steps"); name_$eq("Steps"); 2021-11-18 14:05:39 DEBUG [SuiteToClass$.54.genTestCaseClass] write to /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.jlpay.merch.WebviewActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.34.genTestCaseClass] classNameFormat=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.50.genTestCaseClass] uri_$eq("com.jlpay.merch.WebviewActivity"); name_$eq("com.jlpay.merch.WebviewActivity"); 2021-11-18 14:05:39 DEBUG [SuiteToClass$.54.genTestCaseClass] write to /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.jlpay.merch.SplashActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.34.genTestCaseClass] classNameFormat=com.jlpay.merch.SplashActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.50.genTestCaseClass] uri_$eq("com.jlpay.merch.SplashActivity"); name_$eq("com.jlpay.merch.SplashActivity"); 2021-11-18 14:05:39 DEBUG [SuiteToClass$.54.genTestCaseClass] write to /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 INFO [ScalaTestRuntime.22.$anonfun$genTestCase$2] gen testcase class com.jlpay.merch.BillActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.34.genTestCaseClass] classNameFormat=com.jlpay.merch.BillActivity 2021-11-18 14:05:39 TRACE [SuiteToClass$.50.genTestCaseClass] uri_$eq("com.jlpay.merch.BillActivity"); name_$eq("com.jlpay.merch.BillActivity"); 2021-11-18 14:05:39 DEBUG [SuiteToClass$.54.genTestCaseClass] write to /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ 2021-11-18 14:05:39 DEBUG [ScalaTestRuntime.42.runTestCase] -R/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/-oF-u/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report-h/Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report 2021-11-18 14:05:39 INFO [ScalaTestRuntime.59.runTestCase] run -R /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report/tmp/ -oF -u /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report -h /Users/kongdexi/AndroidStudioProjects/自动化测试/AppCrawler/quality_report WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.parboiled.transform.AsmUtils (file:/Users/kongdexi/AndroidStudioProjects/%e8%87%aa%e5%8a%a8%e5%8c%96%e6%b5%8b%e8%af%95/AppCrawler/appcrawler-2.7.0-hogwarts.jar) to method java.lang.ClassLoader.findLoadedClass(java.lang.String) WARNING: Please consider reporting this to the maintainers of org.parboiled.transform.AsmUtils WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release Discovery starting. 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.MainActivity 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=3 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 3 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_web_content' and @class='android.widget.ImageView'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.ImageView[@resource-id='com.jlpay.merch:id/head_iv' and @class='android.widget.ImageView'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.TextView[@text='账单' and @class='android.widget.TextView'] 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.BillDetailActivity2 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=0 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 0 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.WebviewActivity 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=2 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 2 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=Steps 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=6 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 6 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button' and @text='同意' and @class='android.widget.Button'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_account' and @class='android.widget.EditText'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_password' and @text='登录密码' and @class='android.widget.EditText'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_login' and @text='登录' and @class='android.widget.Button'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.Button[@resource-id='com.jlpay.merch:id/btn_confirm' and @text='同意并继续' and @class='android.widget.Button'] 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.SplashActivity 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=1 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 1 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.FrameLayout[@class='android.widget.FrameLayout'] 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.BillActivity 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=4 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 4 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_1' and @text='今天' and @class='android.widget.TextView'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_2' and @text='近1周' and @class='android.widget.TextView'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_3' and @text='近1月' and @class='android.widget.TextView'] 2021-11-18 14:05:40 DEBUG [ScalaTestTemplate.31.$anonfun$addTestCase$1] add testcase //android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_icon' and @class='android.widget.ImageView'] 2021-11-18 14:05:40 TRACE [ReportFactory$.61.getSelected] Report.store.elementStore size = 16 2021-11-18 14:05:40 TRACE [ReportFactory$.62.getSelected] uri=com.jlpay.merch.LoginActivity 2021-11-18 14:05:40 TRACE [ReportFactory$.68.getSelected] sortedElements=0 2021-11-18 14:05:40 INFO [ReportFactory$.76.getSelected] only show clicked elements 2021-11-18 14:05:40 TRACE [ReportFactory$.79.getSelected] selected elements size = 0 Discovery completed in 24 milliseconds. Run starting. Expected test count is: 16 com.jlpay.merch.MainActivity: - clickedIndex=7 action=CLICKED xpath=//android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_web_content' and @class='android.widget.ImageView'] +

after clicked

- clickedIndex=11 action=CLICKED xpath=//android.widget.ImageView[@resource-id='com.jlpay.merch:id/head_iv' and @class='android.widget.ImageView'] +

after clicked

- clickedIndex=13 action=CLICKED xpath=//android.widget.TextView[@text='账单' and @class='android.widget.TextView'] +

after clicked

com.jlpay.merch.BillDetailActivity2: com.jlpay.merch.WebviewActivity: - clickedIndex=8 action=CLICKED xpath=//android.widget.FrameLayout[@class='android.widget.FrameLayout'] +

after clicked

- clickedIndex=10 action=CLICKED xpath=//android.widget.FrameLayout[@class='android.widget.FrameLayout'] +

after clicked

Steps: - clickedIndex=1 action=CLICKED xpath=//android.widget.Button[@resource-id='com.jlpay.merch:id/positive_button' and @text='同意' and @class='android.widget.Button'] +

after clicked

- clickedIndex=2 action=CLICKED xpath=//android.widget.FrameLayout[@class='android.widget.FrameLayout'] +

after clicked

- clickedIndex=3 action=CLICKED xpath=//android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_account' and @class='android.widget.EditText'] +

after clicked

- clickedIndex=4 action=CLICKED xpath=//android.widget.EditText[@resource-id='com.jlpay.merch:id/et_login_password' and @text='登录密码' and @class='android.widget.EditText'] +

after clicked

- clickedIndex=5 action=CLICKED xpath=//android.widget.Button[@resource-id='com.jlpay.merch:id/btn_login' and @text='登录' and @class='android.widget.Button'] +

after clicked

- clickedIndex=6 action=CLICKED xpath=//android.widget.Button[@resource-id='com.jlpay.merch:id/btn_confirm' and @text='同意并继续' and @class='android.widget.Button'] +

after clicked

com.jlpay.merch.SplashActivity: - clickedIndex=0 action=CLICKED xpath=//android.widget.FrameLayout[@class='android.widget.FrameLayout'] +

after clicked

com.jlpay.merch.BillActivity: - clickedIndex=14 action=CLICKED xpath=//android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_1' and @text='今天' and @class='android.widget.TextView'] +

after clicked

- clickedIndex=15 action=CLICKED xpath=//android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_2' and @text='近1周' and @class='android.widget.TextView'] +

after clicked

- clickedIndex=16 action=CLICKED xpath=//android.widget.TextView[@resource-id='com.jlpay.merch:id/tv_choose_3' and @text='近1月' and @class='android.widget.TextView'] +

after clicked

- clickedIndex=17 action=CLICKED xpath=//android.widget.ImageView[@resource-id='com.jlpay.merch:id/iv_icon' and @class='android.widget.ImageView'] +

after clicked

com.jlpay.merch.LoginActivity: Run completed in 45 milliseconds. Total number of tests run: 16 Suites: completed 8, aborted 0 Tests: succeeded 16, failed 0, canceled 0, ignored 0, pending 0 All tests passed.