ATX+Python:Android自动化测试

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 atx

print(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 time
from atx.ext import report

class 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,atx
from SendSomeMessage import SendMessage
class 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进行自动化测试,有时间可以试一下。


  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值