Macaca macaca 运行报错,其中的坑

hello · 2017年02月21日 · 最后由 dingdan 回复于 2018年07月04日 · 2590 次阅读

macaca 安装正常:macaca doctor 命令显示如下

模拟器 Genymotion 启动正常

adb devices -l 命令显示如下
List of devices attached
192.168.81.102:5555 device product:vbox86p model:Samsung_Galaxy_Note_2_4_2_2API_17__720x1280 device:vbox86p

macaca 服务启动信息如下

运行报错:

com.alibaba.fastjson.JSONException: syntax error, pos 1, json : Internal Server Error
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1361)
    at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1268)
    at com.alibaba.fastjson.JSON.parse(JSON.java:137)
    at com.alibaba.fastjson.JSON.parse(JSON.java:128)
    at com.alibaba.fastjson.JSON.parseObject(JSON.java:201)
    at macaca.client.common.Utils.postRequest(Utils.java:104)
    at macaca.client.common.Utils.request(Utils.java:144)
    at macaca.client.commands.Session.createSession(Session.java:35)
    at macaca.client.MacacaClient.initDriver(MacacaClient.java:1164)
    at macaca.client.H5Mobile.setUp(H5Mobile.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

java.lang.NullPointerException
    at macaca.client.common.Utils.deleteRequest(Utils.java:120)
    at macaca.client.common.Utils.request(Utils.java:146)
    at macaca.client.commands.Session.delSession(Session.java:45)
    at macaca.client.MacacaClient.quit(MacacaClient.java:1188)
    at macaca.client.H5Mobile.tearDown(H5Mobile.java:56)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


sever log 如下

问题已经解决:原因是 nodejs 的安装路径有空格,不能放在 C:\Program Files,C:\Program Files (x86) 下面。否则出现如上莫名奇妙的错误。

这两天学习折腾 macaca,把目前遇到的坑和解决办法总结一下:
No1,nodejs 的安装路径不能有空格,SDK 的安装目录也是不能有空格的,原因不明,希望 macaca 团队看看解决一下。
No2,macaca.webdriver.client 这个 2.0.1jar 包下载不下来,原因是 maven 私服镜像配置问题。参考
No3,macaca-chrome 驱动,IOS 驱动等安装失败,删除临时文件夹 C:\Users\你的用户\AppData\Local\Temp 夹下 npm 开头的文件夹,重新执行命令就好了小马的 macaca 入门指引合集**
No4,Genymotion 模拟器安装 app 失败,Failure [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]。你可能需要安装 Genymotion-ARM-Translation_v1.1.zip

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 11 条回复 时间 点赞

错误不断,好心累啊

@harsayer :帮忙看看,谢谢了。 💐

4楼 已删除

macaca 所在路径有空格,建议更改安装路径。

#5 楼 @adfghzhang node 的路径?

#6 楼 @success macaca 所在的路径,也是因为你的 node 全局安装路径的原因。修改一下吧

#7 楼 @adfghzhang 已经搞定了,就是这个空格的问题,多谢指点

android sdk 的安装路径有空格的话,也会有问题的

hello #11 · 2017年02月24日 Author
王华林 回复

哦。还好,我的 sdk 目录没有空格,少踏一个坑。

这是个大坑

我的回放错误大神,

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册