ATX+Python+uiautomator2环境下进行手机UI自动化测试

ATX+Python+uiautomator2环境下进行手机UI自动化测试

  • 环境搭建
    • 手机环境初始化
    • 在网页端的UI查看器中查看控件及属性
    • 以下是一些自己测试的脚本

环境搭建

开始配置uiautomator2

pip install --pre -U uiautomator2
##也可以是 pip install uiautomator2

会在你的python内安装uiautomator2模块

手机环境初始化

安装完成之后,需要初始化手机端的服务。

python -m uiautomator2 init

这个是重点后面会经常用到, 初始化会自动从github上下载6个重要的文件安装到手机中。
其中包括(minicap ,minicap.so ,minitouch,atx-agent,两个APP(uiautomator.apk com.github.uiautomator.test.apk)
win10下面会在c盘当前用户目录下生成 .uiautomator2 的缓存文件夹,这6个文件都在里面,init初始化的过程中有坑,新手会经常遇到各种问题各种报错

首先要排除以下原因

  1. 排除手机端调试未打开的问题
  2. 排除电脑驱动的问题
  3. 如果未安装可以手动开启服务
    试了很多次,其实初始化的步骤如下
    ** 其中需要自己将6个服务文件取出**
adb shell chmod 777 /data/local/tmp

adb push app-uiautomator.apk /data/local/tmp/app-uiautomator.apk
adb shell chmod 777 /data/local/tmp/app-uiautomator.apk

adb push app-uiautomator-test.apk /data/local/tmp/app-uiautomator-test.apk
adb shell chmod 777 /data/local/tmp/app-uiautomator-test.apk

adb push atx-agent /data/local/tmp/atx-agent
adb shell chmod 777 /data/local/tmp/atx-agent

adb push minicap /data/local/tmp/minicap
adb shell chmod 777 /data/local/tmp/minicap

adb push minicap.so /data/local/tmp/minicap.so
adb shell chmod 777 /data/local/tmp/minicap.so

adb push minitouch /data/local/tmp/minitouch
adb shell chmod 777 /data/local/tmp/minitouch

adb shell pm uninstall com.github.uiautomator
adb shell pm uninstall com.github.uiautomator.test

adb shell pm install /data/local/tmp/app-uiautomator.apk
adb shell pm install /data/local/tmp/app-uiautomator-test.apk

adb shell /data/local/tmp/atx-agent server --stop

adb shell data/local/tmp/atx-agent server -d

pause

安装完成后手机会有一个小车apk

在网页端的UI查看器中查看控件及属性

执行 python -m weditor
之前可能要pip install weditor
成功后会打开一个网页

可以通过wifi和usb两种方法连接 ,这个时候只需要把WIFI IP和 SN设备序列号添加进去,加载出绿色叶子图标就是连接状态,之后reload一下,就会加载出当前的手机截图啦~
(注意,wifi需要和电脑同一网络内哦)

以下是一些自己测试的脚本

在开始的时候需要执行python -m uiautomator2 init,当然你也可以写在自己的脚本之内

# coding=utf-8
import os
import time 
import uiautomator2 as u2

#os.system('python -m uiautomator2 init')
d = u2.connect_usb('HI93QA51NC000WI')

#print d.info()
time.sleep(2)
d.screen_on()
#trun on the screen
time.sleep(2)
try:
   d(text=u"Camera").click()
   time.sleep(4)
   if d(resourceId="com.android.camera2:id/shutter_button").exists:
   	time.sleep(2)
   	print "enter camera sucess!!"
   else:
   	raise AssertionError,"enter camera fail!! "
   	time.sleep(2)

还有更多的API可以查看https://github.com/openatx/uiautomator2,里面已经包含了很多方法~

你可能感兴趣的:(python)