APP自动化之UiAutomator2

今天给大家介绍一款谷歌推出的,基于UIAutomator2框架做APP自动化测试框架,相应于Appium而言,其执行速度,查找元素会更快,能够在一定程度上提升自动化测试效率。

(一)UiAutomator2介绍

UIAutomator2是UIAutomator的升级版,UIAutomator是Google开发的一款用来做Android自动化测试的Java库,而UIAutomator2就是在UIAutomator基础上开发的python库。因此可以通过UIAutomator2做APP自动化测试。

它可以获取APP上任意的元素控件对其进行操作,相较于Appium,UIAutomator2环境搭建简单方便,执行速度快,不过它只支持Android平台,不支持iOS

运行原理

PC端通过python脚本给Android设备发送HTTP请求,Android设备会解析收到的HTTP请求并转化为UIAutomator2代码运行

(二)安装使用

1. 安装UIAutomator2

pip install -u uiautomator2

2. 安装weditor

想要了解如何使用weditor工具,可查看另外一篇文章。

(三)UIAutomator2常用API
1. 连接设备
  1. import uiautomator2 as u2

  2. # USB连接

  3. d = u2.connect_usb(id) # id 为 adb devices 命令中得到的设备 id

  4. # Wifi连接

  5. d = u2.connect(ip) # ip 为 手机 ip

2. APP控制

  1. # 安装APP

  2. d.app_install('路径名/xxx.apk')

  3. # 打开APP

  4. d.app_start("app_package_name")

  5. #关闭APP

  6. d.app_stop("app_package_name")

  7. # 关闭所有APP

  8. d.app_stop_all()

  9. # 清空APP所有数据

  10. d.app_clear('包名')

3. 元素定位

由于页面元素(控件)一般有 resourceId 、text、description、className 等属性,因此可以通过这些属性定位到具体控件。

3-1 resourceId定位

d(resourceId="xxxx")

3-2 text定位

d(text="xxx")

3-3 description定位

d(description="xxx")

3-4 className定位

d(className="xxxx")

3-5 xpath定位

d.xpath("xpath路径")

4. 元素操作

4-1 单击元素

  1. element = d.xpath('xpath路径')

  2. element.click()

4-2 双击元素

  1. element = d.xpath('xpath路径')

  2. element.double_click()

4-3 长按元素

  1. element = d.xpath('xpath路径')

  2. element.long_click()

4-4 输入文本
  1. d.set_fastinput_ime(True) # 打开输入法

  2. d.send_keys(text) # 输入文本

  3. d.set_fastinput_ime(False) # 关闭输入法

4-5 清除文本

  1. element = d.xpath('xpath路径')

  2. element.clear_text()

4-6 获取文本

  1. element = d.xpath('xpath路径')

  2. element.get_text()

4-7 手势操作

  1. # 滑动

  2. d.swipe(sx, sy, ex, ey, duration=0.5)

  3. # 拖拽

  4. d.drag(sx, sy, ex, ey, duration=0.5)

4-8 系统控制

  1. # 按键操作

  2. # key = {"back", "home", "recent", "power", "volume_up", "volume_down", "volume_mute", "enter",...}

  3. d.press(key)

  4. # 截屏

  5. image = d.screenshot()

  6. image.save("path.jpg")

  7. d.screenshot("path.jpg") # 截屏并保存

5. UIAutomator2自动化测试Android APP

  1. # -*- coding:utf-8 -*-

  2. import uiautomator2 as u2

  3. # 连接并启动

  4. d = u2.connect()

  5. # 打印当前連接设备信息

  6. print(d.info)

  7. d.implicitly_wait(20)

  8. """

  9. 下面是执行打开一个房屋交易APP,并进入搜索页面,输入关键词,并点击搜索

  10. """

  11. # 启动app

  12. d.app_start("com.addcn.android.house591")

  13. # 1. 定位元素点击元素,使用xpath定位

  14. d.xpath('//*[@text="中古屋"]').click()

  15. # # 2.定位元素输入框,使用属性定位

  16. # # uiautomator2定位方式:d(定位方式=定位值)

  17. d(description="請輸入社區/街道名稱搜尋").click()

  18. # # 3.在输入框输入内容,并点击提交

  19. d(text="請輸入社區/街道名稱搜尋").send_keys('测试')

  20. # 清除输入框内容

  21. # d.clear_text()

  22. # 点击回车键

  23. d.press('enter')

  24. # 点击搜索匹配的房屋详情卡片

  25. d.xpath('//android.widget.ScrollView/android.view.View[2]').click()

  26. # 关闭应用

  27. d.app_stop_all()

由于UIAutomator2自动化框架相较于Appium框架更加便捷、使用起来更加方便,感兴趣的小伙伴也可以试试

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值