纯搬运贴,内容几乎来源于作者的几篇介绍文章,这里做了整合

目前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) # 输入法用完关掉

如果感兴趣,更多详细的api和最新的信息请见项目 https://github.com/openatx/uiautomator2

如果喜欢,请给作者一个start☆,这是对作者付出的一种肯定,反正我是给了

ATX agent+UIautomation2 自动化测试介绍的更多相关文章

  1. 手机GUI自动化测试介绍

    手机GUI自动化测试介绍 Posted on 2013/05/15 Xing Binbin(测试工程师) 摘要 众所周知,自动化测试可以一定程度上减轻测试人员负担,提高测试效率,并且通过自动化还可以实 ...

  2. Android自动化测试介绍

    1.随机事件测试.通过adb命令执行测试Monkey 就是SDK中附带的一个工具, 用来做压力测试.应用程序crash 和 ANR时会产生日志. 然后根据关键字分析,就可以把应用出现的问题抓出来. 2 ...

  3. TestWriter自动化测试介绍

    简介: TestWriter是上海博为峰结合多年为企业做测试服务的经验所研发的一款具有自主知识产权的自动化测试工具,为企业用户提供真正的低成本.高效率的自动化测试,引领软件测试自动化运用由技术层面向业 ...

  4. Android 自动化测试介绍

    1 介绍: 风格: 3, 4,

  5. ATX 浅谈自动化测试工具 python-uiautomator2

    1.简介 python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试. 2.支持平台及语言 python-uiautomator2封装了谷歌自带的uiaut ...

  6. UI层自动化测试介绍

    UI指的是用户可以用肉眼可以看到的页面. UI层自动化测试的原理.不论是web端还是移动端,原理都是一样的,就是基于页面元素的识别和定位来进行模拟用户行为. 首先识别到某个元素,比如一个按钮,然后定义 ...

  7. App自动化测试介绍

  8. python自动化测试

    python自动化测试 欢迎光临 python自动化测试 小站! 小站基于IT行业,重点关注python,软件自动化测试,测试等. 联系方式 飞信 372818219 相关的群:python开发自动化 ...

  9. Android自动化测试探索

    Android自动化测试探索 前言 通常来说,我们开发完成产品之后,都是由测试组或者是我们自己点一点,基本上没有问题了就开始上线.但是,随着时间的堆叠,一款产品的功能也越来越多.这时,我们为了保证产品 ...

随机推荐

  1. [记录]NGINX配置HTTPS性能优化方案一则

    NGINX配置HTTPS性能优化方案一则: 1)HSTS的合理使用 2)会话恢复的合理使用 3)Ocsp stapling的合理使用 4)TLS协议的合理配置 5)False Start的合理使用 6 ...

  2. 个人永久性免费-Excel催化剂功能第69波-专业图表库新增图表-刘万祥老师中国地图

    Excel催化剂的[专业图表库],仅提供一个工具的输出,让用户可以在制作专业图表过程中更低的门槛,更快速的完成所想要实现的图表.具体参考:第69波-打造最专业易用的商务图表库https://www.j ...

  3. Excel催化剂开源第6波-Clickonce部署之自动升级瘦身之术

    Clickonce无痛自动更新是我最喜欢使用VSTO开发并Clickonce部署的特性之一,但这个自动更新,通常会更新整个程序文件,包含所有的引用dll和一些资源文件等. 一般来说,我们更新的都是主程 ...

  4. [PTA] 1002. 写出这个数 (Basic)

    import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Sc ...

  5. 小白开学Asp.Net Core 《一》

    在开篇中介绍了项目的搭建以及项目中所用到的第三方工具 本篇介绍SqlSugar和Dapper在本项目的实现 一.SqlSugar SqlSuagr的介绍就直接浏览官方网站,官网地址将在底部给出. 在本 ...

  6. ironic+nova详解

    ironic+nova详解 说明: Openstack 的安装步骤省略,按照社区的文档即可搭建出一套相对稳定的使用环境.本文档基于Newton版本. 假设现在已经有一套可用的Newton环境, 以下的 ...

  7. bootstrap-treeview后台Json数据的封装及前台的显示

    1.bootStrap-treeview是我们常用的树形结构,页面风格也比较清新,但是后台数据的封装比较麻烦,经过研究终于解决,和大家分享一下. 2.前端代码如下 <script> var ...

  8. java - try catch finally 用法

    try { //执行的代码,其中可能有异常.一旦发现异常,则立即跳到catch执行.否则不会执行catch里面的内容 } catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 ...

  9. 配置 IDEA 远程连接应用服务器

    当调试 Web 应用时,经常需要使用 ide 远程连接,来进行 debug 调试.使用 Springboot 内置服务器和使用 Tomcat 服务器是常见的应用部署方式,可以用不同的配置方式来启动远程 ...

  10. 11. Java常用类

    1. Scanner类 1.1 基本语法 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanne ...