安卓自动化之uiautomator(python篇)常用adb及图片对比

学完前面的几节知识后,发觉uiautomator里面的方法并不能完全满足我们的要求,因此我们需要其他的东西来帮助我们解决问题

1.图片对比(当有些控件不能识别的时候,比如设置两次壁纸是否一样,我们就可以截图对比设置前后的图片是否一样来判断)

图片对比需要的库为aircv和cv2

使用pip install aircv 

将cv2.pyd拷贝至site packages目录下

使用方法

import aircv

读取源文件  src=aircv.imread('test1.png')

读取搜索文件 sch=aircv.imread('test2.png')

对比相似度来判断 result=aircv.find_template(src,sch)

如果result返回值为None,说明图片相似度较低,反之会返回一个字典,我们可以通过confidence的值来判断图片的相似度,可以通过rectangle来获取相似点的坐标并进行后续操作

{'confidence': 0.9999995231628418, 'result': (97, 49), 'rectangle': ((59, 0), (59, 98), (136, 0), (136, 98))}

2.adb常用命令

利用adb实现长按电源键,音量键等操作

step1:先利用adb shell getevent来获取事件的值(需要注意的事,使用getevent时需要先关闭wifi、gps、蓝牙等)

step2:使用adb shell sendevent来模拟按键按下操作,如下为长按电源键

os.system('adb -s %s shell sendevent  /dev/input/event5 1 116 1' %self.deviceId)     各个设备获取的值可能不一样,需要注意的事是对应的值为16进制的值

os.system('adb -s %s shell sendevent  /dev/input/event5 0 0 0 ' %self.deviceId)

self.sleep(2)

os.system('adb -s %s shell sendevent  /dev/input/event5 1 116 0' %self.deviceId)

os.system('adb -s %s shell sendevent  /dev/input/event5 0 0 0 ' %self.deviceId)

利用adb结束进程

os.system('adb -s %s shell am force-stop com.android.incallui' %self.deviceId)

利用adb启动应用

os.system('adb -s %s shell am start %s' %(self.deviceId,activity))

利用adb截图

os.system('adb -s %s shell screencap /storage/sdcard0/errimg/%s' % (self.deviceId, errimgname))

利用adb拖文件

os.system('adb push srcfile srcfile')

利用adb 检测手机是否重启

runtimeget = os.popen('adb -s %s shell cat /proc/uptime'%self.deviceId)

利用adb查看是否有anr和tombstonees问题出现

anrFileListget = os.popen('adb -s %s shell ls /data/anr'%self.deviceId)

tombstoneFileListget = os.popen('adb -s %s shell ls /data/tombstones'%self.deviceId)

利用adb输入文字

os.system('adb -s %s shell input text %s'%(self.deviceId,content))

利用adb按键

os.system("adb -s %s shell input keyevent '%s'"%(self.deviceId,keycode))

利用adb滑动

os.system('adb -s %s shell input swipe %d %d %d %d %d'%(self.deviceId,x1,y1,x2,y2,time))

利用adb点击

os.system('adb -s %s shell input tap %d %d'%(self.deviceId,x,y))


如果有问题或者好的请加QQ群一起讨论

QQ群: 472527767


你可能感兴趣的:(uiautomator,脚本,python,自动化,图片)