求问各位大神,为啥 monkey 的--throttle 参数不起作用?
adb shell monkey -p package --pct-syskeys 0 --pct-appswitch 0 --pct-anyevent 0 -s 61930 -v-v-v --throttle 1000 10
如上图,无论 throttle 后面的数字是多少,这边的时间都是操作都是很快结束,throttle 完全不管用
网上查过各种资料都试过,求各路大神帮帮忙
adb -s {} shell monkey --ignore-timeouts --ignore-crashes --kill-process-after-error \
--pct-touch 35 --pct-syskeys 30 --throttle 500 -v-v-v 5000
改成--throttle 5000,你看看效果。
这个--throttle 不是每 x 毫秒进行一次操作吗?既然如此 “ --throttle 500 -v-v-v 5000” 不就要 2500s 才会结束吗?
仔细看 支持截图的
adb shell monkey -p package --pct-syskeys 0 --pct-appswitch 0 --pct-anyevent 0 -s 61930 -v-v-v --throttle 1000 10
上面这条命令 只做了 10 个 event,每个 event 间隔 1000 毫秒,所以很快就结束了
我不是小米,我是华为 我用其他机型试过了
我们之前都没太 care 这个,都是写的非常大,然后另外写一个时间统计的方法,比如执行 8 小时,则在执行到八小时的时候把之前下发的 monkey 终止掉。
杀掉 monkey 进程就可以啊。
另外还有一个更简单的办法,就是把你的 monkey 命令再下一次,只是最后的实践数量改成 1,即发一个事件就结束,超级万能。
这个研究过,money 的 throttle 不是每个事件的事件间隔,
:Sending Touch (ACTION_DOWN): 0:(410.0,318.0)
:Sending Touch (ACTION_MOVE): 0:(412.8423,316.00107)
:Sending Touch (ACTION_MOVE): 0:(422.10056,303.9841)
:Sending Touch (ACTION_UP): 0:(427.50558,290.88345)
Sleeping for 200 milliseconds
:Sending Touch (ACTION_DOWN): 0:(167.0,837.0)
:Sending Touch (ACTION_MOVE): 0:(166.56505,842.3712)
:Sending Touch (ACTION_MOVE): 0:(164.79941,853.8922)
:Sending Touch (ACTION_MOVE): 0:(163.6183,866.9585)
:Sending Touch (ACTION_MOVE): 0:(161.69794,875.4406)
:Sending Touch (ACTION_MOVE): 0:(161.64034,888.2781)
:Sending Touch (ACTION_UP): 0:(160.37444,889.48865)
Sleeping for 200 milliseconds
:Sending Touch (ACTION_DOWN): 0:(986.0,1095.0)
:Sending Touch (ACTION_UP): 0:(992.8296,1091.5313)
Sleeping for 200 milliseconds
:Sending Touch (ACTION_DOWN): 0:(948.0,430.0)
:Sending Touch (ACTION_MOVE): 0:(932.42474,424.36377)
:Sending Touch (ACTION_MOVE): 0:(927.90173,414.6834)
:Sending Touch (ACTION_MOVE): 0:(921.5671,409.0014)
:Sending Touch (ACTION_MOVE): 0:(911.44,398.39398)
:Sending Touch (ACTION_UP): 0:(910.3728,385.3957)
Sleeping for 200 milliseconds
是执行了 好几个事件才 sleep 了 200 这个间隔差不多得在 5 个事件,有兴趣的话可以自己统计一下求个平均,所以不能用间隔乘以时间数来计算时间
Throttle 是一个完整事件的间隔. 上面是先 down 然后一系列 move 最后再 up. 类似的一个 Click 需要先 down 然后 up
情况不像是你想说的,按照描述这个间隔单位是秒,但是情况完全不是这样的,跟 1000 不会等 1000s 后再做下一个动作
milliseconds
读一下源码就清楚了。
找了一圈,终于找到原因了,回来挖一下老帖帮一下后来人。
throttle 定义的是事件 (Event) 之间的时间间隔,但 monkey 指令中的 count 指的是迭代操作 (iterations) 的总数,见 monkey 源码的 Monkey.java 注释。
如下方 stackoverflow 帖子所说,如果设置--pct-touch 100,参照日志可以明显看到,一次点击事件,由一次 DOWN 和一次 UP 组成,为两次操作,事件数是操作数 count/2,如果是 trackball 之类的事件,操作就更多一些。
https://stackoverflow.com/questions/45415579/correct-usage-of-the-throttle-parameter-of-monkey