printf a
sleep 5
printf b
) | 你要测试的程序
# 这是通过 pipeline 重定向实现的。| 是 pipeline 的意思,两个括号是命令组。
用 yes 命令如 yes 123 可以不停的输出 123,你可以用 yes 123 | head -3 输出三次。
然后你要是要对某个程序做输入,你用输入重定向。
如果你说的是应答,那就用 expect,具体的用法就复杂了,自己搜教程系统地学习吧。
这边收到了很多ai硬件设备,需要做压力测试、稳定性测试。苦于非安卓系统,不能借助input tap等方式进行ui自动化,也没找到合适的工具。上网查了资料加上自己多次测试排了一些坑,基本可以通过捕捉event实现简单UI自动化。
/dev/input目录下的事件都是在驱动中调用input_register_device(struct input_dev *dev)产生的。
每个event将上报指定的事件:
比如:
通常触摸屏事件就会上报坐标轴事件,电源键比如按下是 1,松开是 0。而与event对应的相关设备信息位于/proc/bus/input/devices。可以直接cat 查看devces信息。小米手机为例:
首先要会捕捉触摸屏以及所需要控制的按键事件,安卓系统比较简单,用自带的getevent就可以了。这边用小米手机为例:
我这边使用的触摸屏事件,打印的event1信息,可以理解为event1上报触摸屏事件。同样,使用电源键、音量键、home键也会用不同的event信息打印:
这里对应event0、event3、event4
但是在绝大多数linux是没有的!!!(有时候BSP对带,which一下就知道了)
如果没有的话只能编译一个放进去,这里推荐evtest
编译方法:
注:arm设备需要使用特定的交叉编译工具,否则可能无法执行;
方法:evtest /dev/input/event
通过evtest.c可以查看设备事件消息,通过TouchScreen.c可以实现点触摸屏某个坐标
[参考文档]( https://download.csdn.net/download/asd2479745295/10712830 )
编译文件push到设备。./touch xxx yyy
这边在使用时懒得充值,没找到合适的免费资源,找到了另一种解决方法。
( https://www.jianshu.com/p/6b5a172e064a )
可以参考之前一篇模拟快速点击的方法;
捕捉:
使用dd指令
模拟:
1、反向使用
2、可以使用追加
此方法可以模拟点击、滑屏、快速点击,各种实体按键短按、长按、快速点击等。暂时没有找到触摸屏长按的方法,原因是 无法控制长按的时间(追加的速度过快),但是可以通过脚本循环实现。
一个简单的循环,测试可以实现长按,但是不好控制时间,有一个思路是获取获取linux系统时间,在循环体中,true修改成时间条件但是可能打断长按事件。
还有一种可行性高,就是单独做成一个脚本供调用,另一个主脚本控制时间,到时间后kill进程来控制。方法很多,因为工作中没有用到这一项就没测试了。
1、ubuntu下编译解决。
2、捕捉的evest为空
数据量太少,dd的版本较低。更新busybox或者dd版本
3、while((1))报错
设备没有bash,只有sh,修改为while((true))可以解释通过。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)