Coder Social home page Coder Social logo

maxim's People

Contributors

mingyuan-xia avatar zhangzhao4444 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

maxim's Issues

小米手机在fast_android模式下跑的时候出现输入服务崩溃

java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission
at android.os.Parcel.createException(Parcel.java:2074)
at android.os.Parcel.readException(Parcel.java:2042)
at android.os.Parcel.readException(Parcel.java:1990)
at android.hardware.input.IInputManager$Stub$Proxy.injectInputEvent(IInputManager.java:925)
at android.hardware.input.InputManager.injectInputEvent(InputManager.java:886)
at com.android.commands.monkey.p.a(SourceFile:132)
at com.android.commands.monkey.Monkey.f(SourceFile:1863)
at com.android.commands.monkey.Monkey.a(SourceFile:1105)
at com.android.commands.monkey.Monkey.main(SourceFile:827)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:380)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.input.InputManagerService.injectInputEventInternal(InputManagerService.java:733)
at com.android.server.input.InputManagerService.injectInputEvent(InputManagerService.java:707)
at android.hardware.input.IInputManager$Stub.onTransact(IInputManager.java:422)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)

troy模式下执行过程中出现无法获取控件ERROR // : null root node returned by UiTestAutomationBridge(3 times), use default events generator.

影响:出现该问题后,将不遵循黑白名单设计规则,随机乱点

测试记录:

  1. 事件数1222个,从event 664开始出现这个错误,后续所有的时间都有这个问题
  2. 事件数1222个,从event 874开始出现这个错误,后续所有的时间都有这个问题
  3. 事件数1222个,从event 225开始出现这个错误,后续所有的时间都有这个问题
  4. 事件数1222个,从event 1015开始出现这个错误,后续所有的时间都有这个问题
  5. 事件数1222个,从event 154开始出现这个错误,后续所有的时间都有这个问题

测试手机:
三星s10 安卓9

完整日志:run.log

错误日志:
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] *** ERROR // : null root node returned by UiTestAutomationBridge(1 times), use default events generator.
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // debug, in pointer event: mBlackWidgets is {}
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] start fix 2020-11-05 17:37:20.816
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // PointF(947.0, 1723.0)
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] over fix event 2020-11-05 17:37:20.818
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] RANDOM NUMBER other= 0.035478413
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] random hit touch
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // debug, in pointer event: mBlackWidgets is {}
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] start fix 2020-11-05 17:37:20.831
[2020-11-05 17:39:47,604]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // PointF(71.0, 627.0)
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] over fix event 2020-11-05 17:37:20.832
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event664, 2020-11-05 17:37:20.835
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_DOWN): 0:(947.0,1723.0)
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event665, 2020-11-05 17:37:20.909
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(947.86975,1715.9478)
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event666, 2020-11-05 17:37:20.975
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(951.8904,1713.0941)
[2020-11-05 17:39:47,605]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event667, 2020-11-05 17:37:21.043
[2020-11-05 17:39:47,606]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(952.4642,1710.8387)
[2020-11-05 17:39:47,606]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event668, 2020-11-05 17:37:21.112
[2020-11-05 17:39:47,606]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(953.97925,1707.7256)
[2020-11-05 17:39:47,606]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event669, 2020-11-05 17:37:21.201
[2020-11-05 17:39:47,606]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(958.44904,1702.0471)
[2020-11-05 17:39:47,609]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event670, 2020-11-05 17:37:21.263
[2020-11-05 17:39:47,609]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(958.73315,1695.6404)
[2020-11-05 17:39:47,610]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event671, 2020-11-05 17:37:21.333
[2020-11-05 17:39:47,610]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(960.30225,1691.1112)
[2020-11-05 17:39:47,610]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event672, 2020-11-05 17:37:21.405
[2020-11-05 17:39:47,613]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(961.75134,1680.4895)
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event673, 2020-11-05 17:37:21.492
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_MOVE): 0:(964.0585,1673.2206)
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event674, 2020-11-05 17:37:21.549
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_UP): 0:(965.5239,1661.756)
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event675, 2020-11-05 17:37:21.625
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // Sleeping for 200 milliseconds
[2020-11-05 17:39:47,614]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event675, 2020-11-05 17:37:21.912
[2020-11-05 17:39:47,615]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // Sleeping for 1000 milliseconds
[2020-11-05 17:39:47,615]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event675, 2020-11-05 17:37:22.977
[2020-11-05 17:39:47,615]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // Sleeping for 200 milliseconds
[2020-11-05 17:39:47,615]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event675, 2020-11-05 17:37:23.244
[2020-11-05 17:39:47,616]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] :Sending Touch (ACTION_DOWN): 0:(71.0,627.0)
[2020-11-05 17:39:47,616]-[INFO]-[case.py]-[adb_shell:314]: [Maxim] // event676, 2020-11-05 17:37:23.314

log如何输出?

adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.autonavi.minimap --uiautomatormix --running-minutes 5 -v -v 后面如何加参数进行log输出

试过:adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.autonavi.minimap --uiautomatormix --running-minutes 5 -v -v 2>CLASSPAT=/sdcard/error.txt 1>CLASSPATH=/sdcard/info.txt 没报错,但也没 log 输出

执行monkey之后,拔掉数据线monkey也停止了

楼主你好,想请问一下,使用楼主这种方式启动monkey只能连接数据线进行操作,一旦拔掉数据线之后monkey就停止了,试过不用楼主这种方式是不会停止的,请问这种怎么解决呢?

(使用帮助)如何查看调试信息

使用 -v 参数
-v 1级log
-v -v 2级log

例如:
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.panda.videoliveplatform --uiautomatormix --running-minutes 60 -v -v

mac 上调试Android手机,无法启动Maxim

sh-wangsf:~ wangshufeng$ adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.snda.wifilocating --uiautomatormix --running-minutes 3
sh-wangsf:~ wangshufeng$

两个jar包已经push到手机的sdcard文件夹中

(使用帮助)小米设备需开启模拟点击

当运行monkey命令 几秒后monkey退出运行。
log如下:

......
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.shiyin/.Splash_MainActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.shiyin/.Splash_MainActivity } in package com.shiyin
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.shiyin/.Splash_MainActivity } in package com.shiyin
Sleeping for 300 milliseconds
:Sending Touch (ACTION_DOWN): 0:(292.0,224.0)
:Sending rotation degree=0, persist=false

请尝试 开启 “开发者选项” -> "USB调试(安全设置) 允许通过usb调试修改权限或模拟点击"

一个Android Go机型跑过程抛出error:java.lang.Exception: Stack trace

系统:Android Go(8.1)
MTK平台

java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1348)
at android.graphics.Bitmap.recycle(Bitmap.java:346)
at android.app.UiAutomation.takeScreenshot(UiAutomation.java:748)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.takeScreenshot(MonkeySourceRandomUiAutomatorMix.kt:1079)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.executeScreenshotTask(MonkeySourceRandomUiAutomatorMix.kt:1059)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:483)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:76)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1078)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:580)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1299)
at tv.panda.test.monkey.Monkey.main(Unknown Source:7)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:285)
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1348)
at android.graphics.Bitmap.recycle(Bitmap.java:346)
at android.app.UiAutomation.takeScreenshot(UiAutomation.java:748)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.takeScreenshot(MonkeySourceRandomUiAutomatorMix.kt:1079)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.executeScreenshotTask(MonkeySourceRandomUiAutomatorMix.kt:1059)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:509)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:76)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1078)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:580)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1299)
at tv.panda.test.monkey.Monkey.main(Unknown Source:7)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:285)
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1348)
at android.graphics.Bitmap.recycle(Bitmap.java:346)
at android.app.UiAutomation.takeScreenshot(UiAutomation.java:748)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.takeScreenshot(MonkeySourceRandomUiAutomatorMix.kt:1079)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.executeScreenshotTask(MonkeySourceRandomUiAutomatorMix.kt:1059)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:509)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:76)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1078)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:580)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1299)
at tv.panda.test.monkey.Monkey.main(Unknown Source:7)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:285)

拓展对原生monkey事件比例设置的能力

1、原生Monkey支持
image
from:https://blog.csdn.net/lemon_linaa/article/details/97777852
2、Maxim支持
image

期望Maxim支持:
1、pctrotation(优先级较高)
2、pctsyskeys
调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)
调整横竖屏切换事件的比例
3、pctmotion
调整滑动事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一 个up事件组成)

 
感谢大佬

不支持安卓11吗?

adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.android.dazhihui --throttle 200 --imagepolling --pct-touch 40 --pct-motion 20 --pct-pinchzoom 5 --pct-nav 5 --pct-majornav 5 --pct-rotation 1 --uiautomatormix --running-minutes 120 -v -v -v -v --output-directory /sdcard/maximlog

---------------------------------log---------------------------------------------------------------------------
.....
[Maxim] // Find ADBKeybaord.
[Maxim] // Device Info: Google-Pixel 4, Android Version: 11
[Maxim] strategy : uiautomator-Mix.

Cannot resolve m0: getPermissionInfo

如何可以点击到权限框允许权限?

[Maxim] // Rejecting start of Intent { act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.google.android.packageinstaller cmp=com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity } in package com.google.android.packageinstaller

如何能点到权限框?

maxism截图未生成

已将加了配置的:max.takeScreenShot = true配置文件max.config推送到sdcard,并且在命令行执行成功,在指定的文件夹下未生成对应的单步截图。

怎么编写max.xpath.selector让底部Tab界面从左到右遍历,并且底部Tab界面里的头部Tab界面也从左到右遍历

1、主界面有多个底部Tab,每个底部Tab界面有多个头部Tab,怎么编写max.xpath.selector让maxim底部Tab界面从左到右遍历,并且底部Tab界面里的头部Tab界面也从左到右遍历,头部Tab界面里的元素就从上到下遍历;
2、如何控制遍历的深度;
3、编写多个firstList、selectList、lastList的xpath,同个界面同时存在符合的多个元素,遍历的优先级是怎样的呢
[
{
"firstList": [
{
"xpath": "//[contains(@text,'发现')]"
},
{
"xpath": "//
[contains(@text,'X友')]"
},
{
"xpath": "//[contains(@text,'小X')]"
},
{
"xpath": "//
[contains(@text,'服务')]"
},
{
"xpath": "//[contains(@text,'我')]"
}
],
"selectList": [
{
"xpath": "//
[@enabled='true']"
},
{
"xpath": "//[@enabled='true']//[contains(name(),'Text')]"
},
{
"xpath": "//[@enabled='true']//[contains(name(),'Button')]"
},
{
"xpath": "//[@enabled='true']//[contains(name(),'Image')]"
}
],
"lastList": [
{
"xpath": "//[../[@enabled='true']]"
},
{
"xpath": "//[../..//[@enabled='true']]"
},
{
"xpath": "//
[../..//[@enabled='true'] and contains(@resource-id,'tab_')]"
},
{
"xpath": "//[../..//[@enabled='true'] and contains(@resource-id,'iv_tab_')]"
},
{
"xpath": "//
[contains(@resource-id,'HorizontalScrollView')]"
},
{
"xpath": "//[@enabled='true']//[contains(name(),'Image')]"
}
],
"blackList": [
{
"xpath": "//[contains(@resource-id,'wrapper_in_custom_title_bar')]//[contains(@resource-id,'right_button')]"
},
{
"xpath": "//[contains(@resource-id,'share')]"
},
{
"xpath": "//
[@resource-id='com.XXX.XXXX:id/fly_progress']"
}
]
}
]

用的是插桩包,为啥还是不能用

可能运行的APP不是插桩包或者APP运行在Android<4.4上却没有SD读写权限Error: ENOENT, no such file or directory '/sdcard/io.appetizer/com.example.geeguarddemo.log'

Mate30执行时报异常,麻烦看一下

[Maxim] *** ERROR // WATCHDOG: Blocked in monitor com.android.server.input.InputManagerServiceBridge on foreground thread (android.fg)
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at tv.panda.test.monkey.ape.utils.APIAdapter.j0(APIAdapter.java:121)
at tv.panda.test.monkey.ape.utils.APIAdapter.getTasks(APIAdapter.java:175)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getTopActivityComponentName(MonkeySourceRandomUiAutomatorMix.kt:1254)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.checkActivity(MonkeySourceRandomUiAutomatorMix.kt:1326)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:90)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1173)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:623)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1440)
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:359)
Caused by: android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:532)
at android.app.IActivityManager$Stub$Proxy.getTasks(IActivityManager.java:4989)
... 12 more
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:532)
at com.android.internal.view.IInputMethodManager$Stub$Proxy.getInputMethodWindowVisibleHeight(IInputMethodManager.java:827)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.checkVirtualKeyboard(MonkeySourceRandomUiAutomatorMix.kt:1430)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:843)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:92)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1173)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:623)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1440)
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:359)
[Maxim] *** ERROR // Fail to getInputMethodWindowVisibleHeight
java.lang.RuntimeException: android.os.DeadSystemException
at android.hardware.display.DisplayManagerGlobal.getDisplayInfo(DisplayManagerGlobal.java:163)
at android.hardware.display.DisplayManagerGlobal.getCompatibleDisplay(DisplayManagerGlobal.java:220)
at android.hardware.display.DisplayManagerGlobal.getRealDisplay(DisplayManagerGlobal.java:253)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generatePointerEvent(MonkeySourceRandomUiAutomatorMix.kt:451)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.generateEvents(MonkeySourceRandomUiAutomatorMix.kt:860)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:92)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1173)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:623)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1440)
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:359)
Caused by: android.os.DeadSystemException
... 12 more
java.util.NoSuchElementException
at java.util.LinkedList.getFirst(LinkedList.java:254)
at tv.panda.test.monkey.MonkeySourceRandomUiAutomatorMix.getNextEvent(MonkeySourceRandomUiAutomatorMix.kt:95)
at tv.panda.test.monkey.Monkey.runMonkeyCycles(Monkey.kt:1173)
at tv.panda.test.monkey.Monkey.run(Monkey.kt:623)
at tv.panda.test.monkey.Monkey$Companion.main(Monkey.kt:1440)
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:359)

(使用帮助)关于如何使用Activity白名单

使用acitivity白名单可做更细粒度场景控制。如仅想monkey部分页面场景

白名单:
参数 --act-whitelist-file  /sdcard/awl.strings

awl.strings 格式如:
tv.panda.xxx.anchor.LiveRecorderActivity
tv.panda.xxx.list.view.activity.HistoryActivity

黑名单:
--act-blacklist-file xxx

实现原理:
hook startActivityLocked() api,非白则拒绝start

执行命令,控制台显示执行random hit touch,但是被测试应用一直无法继续执行

执行的设备有pixel 3a 安卓10、三星s8 安卓8、小米8 安卓9、华为Mate9 安卓9
命令如下
adb -s 设备id shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p 被测试应用--uiautomatormix --running-minutes 10 --imagepolling --throttle 680 -v -v -v -v -v -v --output-directory /sdcard/max-output
报错的logcat如下

12-18 11:14:11.356 32460 32622 E NetworkScheduler: Invalid component specified.
12-18 11:14:11.411 32460 32486 E NetworkScheduler: Invalid component specified.
12-18 11:14:12.523 32460 32622 E GCM     : Missing checkin config file
12-18 11:14:12.525 32689 32725 E FirebaseInstanceId: Token retrieval failed: AUTHENTICATION_FAILED
12-18 11:14:19.388   628   652 E DnsProxyListener: block dns query from uid = 10221
12-18 11:14:19.404 32460 32486 E NetworkScheduler: Invalid component specified.
12-18 11:14:19.627   755  2427 E AudioFlinger: open /proc/32689/cmdline error
12-18 11:14:22.806   682   682 E soundtrigger: audio_extn_sound_trigger_update_stream_status: invalid input device 0x0, for event 2
12-18 11:14:39.584   755 29035 E AudioFlinger: open /proc/32689/cmdline error
12-18 11:14:42.655   682   682 E soundtrigger: audio_extn_sound_trigger_update_stream_status: invalid input device 0x0, for event 2
12-18 11:14:45.386   959  1058 E storaged: getDiskStats failed with result NOT_SUPPORTED and size 0

(使用帮助)关于monkey卡停

当monkey运行过程中出现卡停时(卡停表现为无后续注入事件),需分情况考虑:

1 卡停时如果monkey命令没退出说明 系统资源打满了,app或系统即将可能会崩溃。 所以Monkey卡住也是正常的。这种情况多等会儿会有结果.

2 如果卡停时 monkey命令退出了 才是monkey自身有问题。这种情况请qq上联系我

三星6.0.1版本上执行时,monkey卡停了

在三星手机上出现了这种情况,即应用界面没有变化了,然后等了段时间,monkey也自动停止了C:\Users\panxr33970>adb shell ps | findstr tv.panda.test.monkey
shell 30226 23413 1802800 105564 hrtimer_na b6d39b1c S tv.panda.test.monkey

小米NOTE 不能运行

MI NOTE LTE
4.4.4

看不出log

sanbo [~]$ adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.panda.test.monkey.Monkey -p com.mixpanel.example.hello --uiautomatormix --running-minutes 60
sanbo [~]$

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.