ATX agent+UIautomation2 自动化测试介绍

ATX+UIautomator2在自动化测试领域表现出色,以其快速的运行速度超过appium,简化部署和使用流程,支持相同ID或文本的控件定位,获取原生属性,捕获toast信息和处理弹窗等功能。安装通过pip和初始化命令简单完成,提供官方示例代码展示其基本用法,如点击、长按和文本输入等操作。
摘要由CSDN通过智能技术生成

目前ATX+UIautomator2 处于自动化界的浪口风尖,现在有幸终于有时间对ATX进行了粗浅的了解

为什么要用ATX

ATX+UIautomator2的优势:

1.速度吊打appnium,群里面的人这样说的

  • 运行速度快,比Appium运行速度快了好多。(用户表示不知道ATX为什么快,PS(作者): 我其实也不知道appium为什么这么慢)
  • 部署和使用比较简单 (当初就是朝着这个方向开发的)
    最开始笔者在部署appium的时候,花了一整天的时间,最终还是部署好了。但后来还是放弃了,因为想到要部署这么多台机器,还不如自己开发一个测试框架来的方便(当时的需求也比较简单)

2.即使是id,text相同的控件也能随意指定哪一个进行点击操

d(resourceId="com.tencent.wecarnews:id/radio_list_item_frequency")[0].get_text()/click()

d(resourceId="com.tencent.wecarnews:id/radio_list_item_frequency", instance=1).get_text()

3.能获取到控件的安卓原生属性

d(text="Settings").info

{
u’contentDescription’: u’’,
u’checked’: False,
u’scrollable’: False,
u’text’: u’Settings’,
u’packageName’: u’com.android.launcher’,
u’selected’: False,
u’enabled’: True,
u’bounds’: {u’top’: 385,u’right’: 360,u’bottom’: 585, u’left’: 200},
u’className’: u’android.widget.TextView’,
u’focused’: False,
u’focusable’: True,
u’clickable’: True,
u’chileCount’: 0,
u’longClickable’: True,
u’visibleBounds’: {u’top’: 385,u’right’: 360, u’bottom’: 585,u’left’: 200},
u’checkable’: False
}

4.能拿到toast信息

a = d.toast.get_message(5.0, 10.0, "default message")
print(a)

5.处理弹窗,还是显性等待

d.watcher("INSTALL").when(text="安装").click()
d.watcher("NEXT").when(text="下一步").click()
d.watchers.watched = True

优势还有很多,目前总结到这里

UIautomator安装

pip install -U --pre uiautomator2

初始化

python -m uiautomator2 init

一切准备就绪后,就可以进行预约的自动化之旅了!

这里贴一段官方的demo

# coding: utf-8
import unittest
import uiautomator2 as u2
import time
import uiautomator2.ext.htmlreport as htmlreport

class TestCloudMusic(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.u = u2.connect_usb()
        cls.u.healthcheck()  # 解锁屏幕并启动uiautomator服务
        hrp = htmlreport.HTMLReport(cls.u, 'report')
        hrp.patch_click()

        # cls.u.disable_popups(True)  # 允许自动处理弹出框
        cls.u.make_toast("测试开始", 3)

    @classmethod
    def tearDownClass(cls):
        cls.u.make_toast("测试结束", 3)
        cls.u.app_stop_all()
        cls.u.service(
            "uiautomator").stop()  # 停止uiautomator守护程序,允许其他测试框架如 appium 运行

    def setUp(self):
        self.d = self.u.session("com.netease.cloudmusic")  # restart app
        time.sleep(5)  # 等待首页广告结束

    def tearDown(self):
        pass

    def testPrivateFM(self):  # 私人FM
        self.d(text="私人FM").click()

    def testRecommendEveryday(self):  # 每日推荐
        self.d(text="每日推荐").click()


if __name__ == '__main__':
    unittest.main()

一些简单的使用方法介绍:

定位方式

ResourceId定位: d(resourceId=“com.smartisanos.clock:id/text_stopwatch”).click()

Text定位 d(text=“秒表”).click()

Description定位 d(description=“…”).click()

ClassName定位 d(className=“android.widget.TextView”).click()

xpath定位并不支持,一开始打算做支持的,但是发现不用也能搞定。就是代码写的长一点而已。

操作控件

# click
d(text="Settings").click()

# long click
d(text="Settings").long_click()

# 等待元素的出现
d(text="Settings").wait(timeout=10.0)

中文字符的输入
如果可以定位到元素,直接通过set_text就可以输入中文

d(text="Settings").set_text("你好")	

如果定位不到元素需要使用send_keys方法,以及切换输入法

d.set_fastinput_ime(True)
d.send_keys("你好 Hello")
d.set_fastinput_ime(False) # 输入法用完关掉

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值