ATX+Python:Android自动化测试

来源:互联网 发布:辣条网络用语 编辑:程序博客网 时间:2024/04/28 17:44

1.测试环境搭建

python[3.5] 安装完成后 ,进行以下操作:

1.1 安装atx

pip install atx

1.2 安装opencv

pip install opencv_python-3.2.0.7-cp35-cp35m-win32.whl

1.3 安装uiautomater

pip install uiautomator

1.4 测试环境是否搭建成功

连接Android手机或者Android模拟器[推荐蓝叠],先用adb devices确保手机/模拟器已连接上,再进行以下操作。

在pycharm中输入以下代码,并点击运行:

import atxprint(atx.connect())

如果输出类似于:<atx.drivers.android.AndroidDevice object at 0x02B14630>,则安装成功,反之,需要查找问题所在并进行修改。


2.常用实例

2.1 连接手机

self.d = atx.connect()#连接手机self.d.screen.on()#唤醒屏幕

2.2 启动/退出APP

self.d.start_app(package_name[,activity])self.d.stop_app(package_name[,clear])#clear 为true时,APP数据将被清空

2.3 基于UI的自动化操作

2.3.1 获取控件

通过uiautomatorviewer(D:\Program Files\Android\android-sdk\tools\uiautomatorviewer.bat)获取ID、class、Text等,获取控件的方法类似于:

self.d(resourceId="com.easemob.businesslink:id/phone_number")self.d(resourceId="com.easemob.businesslink:id/layout", className="android.widget.LinearLayout",index=3)self.d(resourceId="com.easemob.businesslink:id/list").child(className="android.widget.LinearLayout", index="3")self.d(className="android.widget.RelativeLayout").child(text="测试")

2.3.2 常用事件

(1)是否存在

self.d(resourceId="").exists

(2)点击

self.d(resourceId="").click

(3)滑动

self.d().swipe.left()

self.d().swipe.right[up,down]()

(4)滚动

self.d().scroll()

(5)长按

self.d(resourceId="").swipe.right(steps=300)[300相当于长按5秒]

(6)设置文本

self.d(resourceId="").set_text("123456")

[待补充......]


2.4 基于atx的Report

基于atx进行测试时,引入report,可以生产包含网页、gif图片、result.json的报告,具体操作如下:

import timefrom atx.ext import reportclass SendMessage:    def __init__(self,d,dir):        self.d=d        self.rp=report.Report(self.d, save_dir=dir)        self.rp.patch_uiautomator()        self.rp.info("Start Send Melito_message")        self.chars="ABC"    def stopSend(self):        self.rp.info("Send Camito Message is finished")    #***********************************************发送语音************************    #发送语音消息,可定制语音消息的时长steps、发送条数i    def sendVoice(self):        self.d(resourceId="com.easemob.businesslink:id/btn_set_mode_voice").click()        time.sleep(1)        if self.d(resourceId="com.easemob.businesslink:id/btn_press_to_speak").exists:            self.d(resourceId="com.easemob.businesslink:id/btn_press_to_speak").swipe.right(steps=300)#通过这种方式来实现长按,600相当于10秒                        print ("send voice message success")
其他类调用该类即可生成Report:

import time,atxfrom SendSomeMessage import SendMessageclass CHAT:    def __init__(self):        self.d=atx.connect()        dir="Report/chat"+str(time.time()).replace(".","")        self.sendmessage = SendMessage(self.d,dir)        self.chat()    def chat(self):        self.sendmessage.sendVoice()        self.sendmessage.stopSend()if __name__=="__main__":    CHAT()

3. 总结

(1)使用ATX对Android进行自动化测试的难度不大,准确性也比较高。
(2)自动化测试的前提是 设计好测试用例 ,重点也是设计测试用例,自动化测试仅作为辅助。使用ATX可以减少繁杂的人工操作、也可以严格控制每一个操作执行的次数和时间,能够提升工作效率。
(3)另外,网上有资料说ATX也可对IOS进行自动化测试,有时间可以试一下。


原创粉丝点击