android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim...

42417404f3698d3766898afd2a3ee8fd.png

c9b86692a77e9f5f3ba78595e79d85d9.gifTD 回复

accessibilityservice 被其他进程占用中,可能是 appium\uiautomator\atx 等等,需要关闭后运行 max

a57019e6e7a429d44b536637676b34e5.gif

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第1张图片

@zhangzhao_lenovo 大神,这个错误是什么原因啊,一跑起来就停了,SM-G9600 的手机

java.lang.IllegalStateException: UiAutomationService android.accessibilityservice.IAccessibilityServiceClient$Stub$Proxy@2c0907falready registered!

at android.os.Parcel.createException(Parcel.java:1974)

at android.os.Parcel.readException(Parcel.java:1934)

at android.os.Parcel.readException(Parcel.java:1884)

at android.view.accessibility.IAccessibilityManager$Stub$Proxy.registerUiTestAutomationService(IAccessibilityManager.java:696)

at android.app.UiAutomationConnection.registerUiTestAutomationServiceLocked(UiAutomationConnection.java:399)

at android.app.UiAutomationConnection.connect(UiAutomationConnection.java:97)

at android.app.UiAutomation.connect(UiAutomation.java:234)

at android.app.UiAutomation.connect(UiAutomation.java:210)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.connect(MonkeySourceRandomUiAutomatorMix.kt:123)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.(MonkeySourceRandomUiAutomatorMix.kt:142)

at tv.panda.test.monkey.Monkey.run(Monkey.kt:558)

at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1422)

at tv.panda.test.monkey.Monkey.main(Unknown Source:2)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:341)

Caused by: android.os.RemoteException: Remote stack trace:

at com.android.server.accessibility.UiAutomationManager.registerUiTestAutomationServiceLocked(UiAutomationManager.java:88)

at com.android.server.accessibility.AccessibilityManagerService.registerUiTestAutomationService(AccessibilityManagerService.java:1354)

at android.view.accessibility.IAccessibilityManager$Stub.onTransact(IAccessibilityManager.java:159)

at android.os.Binder.execTransact(Binder.java:739)

java.lang.IllegalStateException: UiAutomation not connected!

at android.app.UiAutomation.throwIfNotConnectedLocked(UiAutomation.java:1112)

at android.app.UiAutomation.getWindows(UiAutomation.java:474)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getWindowRoots$monkey_release(MonkeySourceRandomUiAutomatorMix.kt:685)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.collectClickable(MonkeySourceRandomUiAutomatorMix.kt:670)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generatePointerEvent(MonkeySourceRandomUiAutomatorMix.kt:457)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:850)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:92)

at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1155)

at tv.panda.test.monkey.Monkey.run(Monkey.kt:605)

at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1422)

at tv.panda.test.monkey.Monkey.main(Unknown Source:2)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:341)

java.util.NoSuchElementException

at java.util.LinkedList.getFirst(LinkedList.java:244)

at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:95)

at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1155)

at tv.panda.test.monkey.Monkey.run(Monkey.kt:605)

at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1422)

at tv.panda.test.monkey.Monkey.main(Unknown Source:2)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:341)

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第2张图片

求问:第一次用该工具,如何设置精准化 monkey 脚本,可以一直只跑登录退出操作?

e36636acde195ac7acaf4d51f3c39500.png

问题:

1、跑 app 的过程中重复退出 app,是什么原因导致的?

2、配置了 max.xpath.actions,但是第二次进入页面的时候不会执行 actions 里面的

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第3张图片

我也遇到了一样的问题,测试机型是 MEIZU MX5,android 5.1.想了解下后面你们是如何解决的呢

f29a32046b08a5f91baeb1dac603fd01.png

请教个问题,想用 shell 脚本自动化执行 maxim,有一步需要安装 apk,但是会有安装权限弹窗,怎么自动化点掉,有好的办法吗?

查了下资料,Android 自带的 UIAutomator 框架可以满足条件,但是提供的 api 得用 java。。用 java 写这么个操作感觉有点笨重,除了 java,还有其他法子不?

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第4张图片

8001ccb7430cec595d3f5e32c885e324.png

如果 app 使用 RN 导致了整个 app 只有 1 个 activity 的时候,该如何来用白名单和黑名单功能呢?

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第5张图片

9940ae3664be39bf32d6cebd8600a29d.png

请问下楼主是怎么处理执行过程中把网络关了的情况

8b18c39e688d40282db5644f57b44065.png

请问一下大佬,如何关闭 屏幕 180 度翻转啊? 发现每次跑 maxim 都会发生 180 度翻转,导致黑区域坐标有变化。

a57019e6e7a429d44b536637676b34e5.gif

c9b86692a77e9f5f3ba78595e79d85d9.gifTD 回复

@zhangzhao_lenovo 大神,Android11 的是不是也没适配,我看了一下和 Android10 一样的报错呢,麻烦更新一下哈,谢谢了

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第6张图片

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第7张图片

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第8张图片晓只 回复

图片在你指定输出位,比如我指定在/SDCARD/MKLOG,还有一种情况是,响应时间小于 200 毫秒是不截图的

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第9张图片

为什么要启动多个?我记得允许多台,adb -s xxdevice-id shell xxx

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第10张图片

你好,一个模拟器指定了设备 id 能正常跑,再开启一个模拟器就立即停止了。

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第11张图片

221Floor has deleted

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第12张图片

同问。。。你有了解到为什么吗?

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第13张图片

crash 目录生成了,但是目录里头没有图片是什么情况呢?

4d98f422bdfdc8a372d8d4b0b741ea35.png

除了 crash 其他异常的 log 能捕获么

42417404f3698d3766898afd2a3ee8fd.png

红框上一步是命中了 RESET EVENT 就是重启 app,重启的过程就是把 app kill 掉然后再启动

top activity huawei xxx is isvalid 是指当前在桌面非待测 APP,下一步就启动 app

e288ff4a40c906c42f617d4b97c2a8a8.png

我想问下,就是当前测试的 activity 正是 我想要测试的 app,但是日志中却提示要 stop 我正在测试的 package,然后后台就把这个 app 进程杀掉了,然后又监测到当前 activity 是 huawei.launcher,就又重启应用。我想问下,明明一切正常并没有 crash,为什么会杀掉进程?是 maxim 代码有点问题么?感谢回复

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第14张图片

a57019e6e7a429d44b536637676b34e5.gif

@zhangzhao_lenovo 大神,能否适配一下 Android10 的手机呢,最近跑 Android10 的稳定性,跑不起来呢。

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第15张图片

a57019e6e7a429d44b536637676b34e5.gif

这个 monkey 支持 Android10 的吗

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第16张图片

[Maxim] // DisallowActivity: com.tencent.qqmusic.activity.AppStarterActivity

开头日志里面是有生效的

42417404f3698d3766898afd2a3ee8fd.png

log 开头会打印 blacklist 先确认下配置是否生效?

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第17张图片

为什么 com.tencent.qqmusic.activity.AppStarterActivity 已经加入黑名单了,还能 resume??

[Maxim] // activityResuming(com.tencent.qqmusic)

[Maxim] // : debug, currentActivity is com.tencent.qqmusic.activity.AppStarterActivity

8f938fd79bc6acd5d3174c4f5e429c71.png

还有个问题,,,为什么在 max.xpath.selector 这个配置文件的 blacklist 里配置了一些控件 它还是能点击呢

adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar execapp_process /system/bin tv.panda.test.monkey.Monkey -p com.fenbi.android.zenglish --uiautomatortroy --running-minutes 6 --imagepolling -v -v --throttle 500

org.json.JSONException: Unterminated object at character 142 of [

{

"firstList":

[

{ "xpath": "//[@class='android.widget.TextView' and @resource-id='com.fenbi.android.zenglish:id/name']" and @text='如何上课'}

],

"selectList":

[

{ "xpath": "//[@clickable='true'//[contains(name(),'android.widget.FrameLayout')]"}

],

"lastList":

[

{ "xpath": "//[@class='android.widget.LinearLayout' and @resource-id='com.fenbi.android.zenglish:id/tab_bar']" }

],

"blackList":

[

{ "xpath": "//[@class='android.widget.ImageButton' and @resource-id='com.fenbi.android.zenglish:id/sobot_btn_set_mode_rengong']" }

{ "xpath": "//[contains(@content-desc, '确认支付')]" }

{ "xpath": "//[@class='android.webkit.WebView' and @resource-id='com.fenbi.android.zenglish:id/web_view']" }

{ "xpath": "//[@class='android.widget.CheckedTextView' and @resource-id='com.fenbi.android.zenglish:id/ytknavibar_right']" }

{ "xpath": "//[@class='android.widget.TextView' and @resource-id='com.fenbi.android.zenglish:id/text_buy']" }

{ "xpath": "//[@class='android.widget.CheckedTextView' and @resource-id='com.fenbi.android.zenglish:id/mission']" }

{ "xpath": "//[contains(@resource-id, 'com.fenbi.android.zenglish:id/misc')]" }

]

}

]

at org.json.JSONTokener.syntaxError(JSONTokener.java:449)

at org.json.JSONTokener.readObject(JSONTokener.java:393)

at org.json.JSONTokener.nextValue(JSONTokener.java:100)

at org.json.JSONTokener.readArray(JSONTokener.java:429)

at org.json.JSONTokener.nextValue(JSONTokener.java:103)

at org.json.JSONTokener.readObject(JSONTokener.java:384)

at org.json.JSONTokener.nextValue(JSONTokener.java:100)

at org.json.JSONTokener.readArray(JSONTokener.java:429)

at org.json.JSONTokener.nextValue(JSONTokener.java:103)

at org.json.JSONArray.(JSONArray.java:92)

at org.json.JSONArray.(JSONArray.java:108)

at tv.panda.test.monkey.ape.model.XPathSelectorReader.read(XPathSelectorReader.kt:82)

at tv.panda.test.monkey.ape.model.XPathSelectorController.(XPathSelectorController.kt:70)

at tv.panda.test.monkey.MonkeySourceUiAutomatorTroy.(MonkeySourceUiAutomatorTroy.kt:67)

at tv.panda.test.monkey.Monkey.run(Monkey.kt:573)

at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1422)

at tv.panda.test.monkey.Monkey.main(Monkey.kt)

at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)

at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:251)

[Maxim] // Troy Selector:

[Maxim]

[Maxim]

[Maxim] *** ERROR // : the top activity package com.mumu.launcher is invalid.

8f938fd79bc6acd5d3174c4f5e429c71.png

我的也是空的 我的配置文件和你配置的一样 也把配置文件 push 到 sdcard 上了,。。。请问解决了吗

42417404f3698d3766898afd2a3ee8fd.png

max.config 是需要 push 到 /sdcard

e288ff4a40c906c42f617d4b97c2a8a8.png

你好,我按如下配置的:配置电脑上的 max.config 文件

android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim..._第18张图片

然后执行命令 adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.xxx --uiautomatormix --running-minutes 3 -v -v --throttle 400 --output-directory /sdcard/testreport/ --imagepolling

结果跑出了 crash,但是 crash 截图文件夹是空的。求问这是为什么?

你可能感兴趣的:(android实现1000次点击,(无需 Root) 基于 Android Monkey 二次开发,实现高速点击的 Android Monkey 自动化工具 fastmonkey - 代号 Maxim...)