lgxqf / uicrawler Goto Github PK
View Code? Open in Web Editor NEW基于Appium的 App UI 遍历 & Monkey工具 (支持操作步骤回放)
基于Appium的 App UI 遍历 & Monkey工具 (支持操作步骤回放)
javax.xml.transform.TransformerException: 需要], 但找到: @
at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:612)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:530)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1939)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1728)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1628)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1599)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1319)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Argument(XPathParser.java:1471)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FunctionCall(XPathParser.java:1539)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PrimaryExpr(XPathParser.java:1448)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FilterExpr(XPathParser.java:1347)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1280)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:842)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PredicateExpr(XPathParser.java:1956)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1938)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1728)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1628)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1599)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1319)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:131)
at com.sun.org.apache.xpath.internal.XPath.(XPath.java:180)
at com.sun.org.apache.xpath.internal.XPath.(XPath.java:268)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:191)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:273)
at util.XPathUtil.getNodesFromFile(XPathUtil.java:532)
at Crawler.main(Crawler.java:487)
--------------- linked to ------------------
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: 需要], 但找到: @
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:287)
at util.XPathUtil.getNodesFromFile(XPathUtil.java:532)
at Crawler.main(Crawler.java:487)
Caused by: javax.xml.transform.TransformerException: 需要], 但找到: @
at com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:612)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:530)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1939)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1728)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1628)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1599)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1319)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Argument(XPathParser.java:1471)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FunctionCall(XPathParser.java:1539)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PrimaryExpr(XPathParser.java:1448)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.FilterExpr(XPathParser.java:1347)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1280)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:842)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PredicateExpr(XPathParser.java:1956)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1938)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1728)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1628)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1599)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1319)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1238)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1144)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1065)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:1007)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:932)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:872)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:836)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:809)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:792)
at com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:131)
at com.sun.org.apache.xpath.internal.XPath.(XPath.java:180)
at com.sun.org.apache.xpath.internal.XPath.(XPath.java:268)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:191)
at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:273)
... 2 more
16:33:56.024 [main] ERROR Crawler - ------------------------------ERROR. Testing stopped unexpectedly!!!!----------------
isSamePage(previousPageStructure,afterPageStructure)这个方法在启动时候点击权限弹窗时判断有点问题,多个权限点击允许前后pageStructure是一样的
是否支持指定页面遍历或者是支持指定范围的页面进行遍历呢?
多台手机一起执行
第一次 找不到,手动重新进入ANDOIRD_LOGIN_CHANGE所在的页面,偶尔又可以自动登录
运行命令:
ava -jar UICrawler.jar -f config.yml -u FE385BA5-0FAE-49C0-889F-2887E4678EEC
20:33:00.689 [main] INFO util.Driver - http://0.0.0.0:4723/wd/hub
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: The platform version 'undefined' should be a valid version number
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'ZoedeMac-Pro.local', ip: 'fe80:0:0:0:8b1:8a63:8dd5:a6c0%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.15.4', java.version: '1.8.0_181'
Driver info: driver.version: Driver
remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: The platform version 'undefined' should be a valid version number
参数 -x Write data to influxDB 怎么用?
文档中说道, 配置好了会生成perf_data.txt并写放到influxDB ,实际情况 :生成了perf_data.txt 并没有将数据放到influxDB
D:\UICrawler>java -jar UICrawler.jar -h
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:284)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:316)
at java.util.jar.JarVerifier.update(JarVerifier.java:228)
at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
at java.util.jar.JarFile.getInputStream(JarFile.java:450)
at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:776)
at sun.misc.Resource.cachedInputStream(Resource.java:77)
at sun.misc.Resource.getByteBuffer(Resource.java:160)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:367)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
应该是gb2312,但是报告中申明是utf-8
8:34:09.373 [main] INFO util.ConfigUtil - Reading config file /Users/ios/Desktop/config.yml
18:34:09.658 [main] INFO util.ConfigUtil - Config : PORT = 4723
18:34:09.659 [main] INFO util.ConfigUtil - Config : MAX_CLICK_COUNT = 1000000
18:34:09.660 [main] INFO util.ConfigUtil - Config : DB_LOG = false
18:34:09.660 [main] INFO util.ConfigUtil - Config : PERF_LOG = false
18:34:09.660 [main] INFO util.ConfigUtil - Config : DOM_DISPLAY = false
18:34:09.662 [main] INFO util.ConfigUtil - Config : GENERATE_VIDEO = true
18:34:09.669 [main] INFO util.ConfigUtil - Config : VIDEO_VERTICAL = true
18:34:09.670 [main] INFO util.ConfigUtil - Config : DEVICE_NAME = null
18:34:09.674 [main] INFO util.ConfigUtil - Config : APPIUM_SERVER_IP = 0.0.0.0
iOS 真机测试,测试过得页面Log中没有显示。
页面中点击了按钮,应用程序奔溃,但是Log中没有显示有crash。
我没有支持maven的IDE,因此希望能转成gradle,但是发现用过命令转成gradle后,编译失败,还是gradle更方便的。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.