dJe*_*dJe 5 android androidviewclient
我已经放弃了 AndroidViewClient 的 MonkeyRunner 以受益于它增加的可靠性和实现的简单性(感谢上帝提供纯 Python)。
我需要尽可能快地执行几个 device.touch() 事件,但是 AndroidViewClient 似乎比 MonkeyRunner 慢得多。
这是我用来给它们计时的代码:
for iteration in range(1,6):
ts_start = datetime.datetime.now()
device.touch(1,1,'DOWN_AND_UP')
chrono = datetime.datetime.now() - ts_start
print str(iteration)+': '+str(chrono)
Run Code Online (Sandbox Code Playgroud)
这是 MonkeyRunner 的输出:
1: 0:00:00.003000
2: 0:00:00.002001
3: 0:00:00.002001
4: 0:00:00.002001
5: 0:00:00.002000
Run Code Online (Sandbox Code Playgroud)
这是 AVC 的输出:
1: 0:00:00.460000
2: 0:00:00.515000
3: 0:00:00.499000
4: 0:00:00.508000
5: 0:00:00.456000
Run Code Online (Sandbox Code Playgroud)
这平均慢了大约 200 倍。
似乎可以将事件存储在二进制文件中,然后直接在手机上推送和运行它。但是,我想坚持使用纯 AVC 方法。
那可能吗?
编辑:
由于现在不可能以我想要的方式实现更好的性能,因此我必须像我提到的那样实现事件文件。
为此,我使用了两个资源:
以下是其中一个文件的样子(已截断):
#!/bin/sh
sendevent /dev/input/event1 3 57 0
sendevent /dev/input/event1 3 55 0
sendevent /dev/input/event1 3 53 640
sendevent /dev/input/event1 3 54 900
sendevent /dev/input/event1 3 58 1
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 57 0
sendevent /dev/input/event1 3 55 0
sendevent /dev/input/event1 3 53 640
sendevent /dev/input/event1 3 54 730
sendevent /dev/input/event1 3 58 1
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 3 57 0
sendevent /dev/input/event1 3 55 0
sendevent /dev/input/event1 3 53 500
sendevent /dev/input/event1 3 54 900
sendevent /dev/input/event1 3 58 1
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
sendevent /dev/input/event1 0 2 0
sendevent /dev/input/event1 0 0 0
Run Code Online (Sandbox Code Playgroud)
在性能方面,它大约是 MonkeyRunner 实现的两倍。
您可以尝试的一种快速解决方法是
cmd = ''
for _ in range(6):
cmd += 'input tap 1 1;'
ts_start = datetime.datetime.now()
device.shell(cmd)
chrono = datetime.datetime.now() - ts_start
print str(chrono)
Run Code Online (Sandbox Code Playgroud)
它可能对您有帮助,但可能并不适合所有情况。
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |