一个好用的移动端自动化框架-uiautomator2

简介(百度的):

  uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作

优缺点:
  优点:

    1、环境搭建简单

    2、元素查找有专用的weditor,相比其他简单明了

    3、代码语法简单,容易学习理解

    4、相比appium不用启动客户端

    5、可以使用wifi以及usb连接

  缺点:

    1、兼容性相对较差

    2、功能相比appium较缺少

    3、设备上面必须安装一些调试app,新设备就必须去连接usb然后去init安装,比较不省心

安装,安装这一块就不多bb了:

  装一下uiautomator2的包

  pip3 install --pre -U uiautomator2

  usb连接手机装一下依赖的包:

  python3 -m uiautomator2 init

装完之后,开始启动撸码

import uiautomator2

## wifil连接
d = uiautomator2.connect_wifi()
## 直接连接
d1 = uiautomator2.connect()
## usb连接
d2 = uiautomator2.connect_usb()
## adb、wifi连接
d3 = uiautomator2.connect_adb_wifi()

这些就是直接启动,然后就可以直接开始android的ui自动化了

下面附一些基础语法

ResourceId定位:
d(resourceId="com.meizu.mzbbs:id/tp").click()

Text定位:
d(text="精选").click()

Description定位:
d(description="..").click()

ClassName定位:
d(className="android.widget.TextView").click()

import uiautomator2 as u2
from time import sleep

##使用本地wifi地址
d = u2.connect(‘192.168.31.234‘)

##等待元素出现
# d(text=‘settings‘).wait(timeout=10.0)

##使用设备id控制
# d = u2.connect_usb(‘设备id‘)

# 启动App
d.app_start("com.meizu.mzbbs")
# 搜索
d(resourceId="com.meizu.mzbbs:id/j0").click()
# 停止app
d.app_stop("com.meizu.mzbbs") 

中文字符的输入
如果可以定位到元素,直接通过set_text就可以输入中文
d(text="Settings").set_text("你好")

如果定位不到元素需要使用send_keys方法,以及切换输入法
d.set_fastinput_ime(True)
d.send_keys("你好 Hello")
d.set_fastinput_ime(False) # 输入法用完关掉

截图:d.screenshot("home.jpg")
获取图层信息:xml = d.dump_hierarchy()

## 按住滑动
u.swipe_points([(0.235, 0.456), (0.503, 0.449), (0.509, 0.601), (0.777, 0.603), (0.771, 0.763), (0.222, 0.75)], 0.2)

  

原文地址:https://www.cnblogs.com/dflblog/p/11642927.html

时间: 2024-10-10 16:55:39

一个好用的移动端自动化框架-uiautomator2的相关文章

工作流和过程自动化框架 Camunda BPM

Camunda BPM 是一个灵活的工作流和过程自动化框架,它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中.Camunda BPM与Java EE 6集成,并可以与Spring Framework完美匹配. Camunda BPM平台还提供了一套丰富的.围绕BPM生命周期的组件: 流程实现和执行组件:camunda engine(负责执行BPMN 2.0流程).REST API.Spring/CDI集成 流程设计组件:ca

ShutIt:一个基于 Python 的 shell 自动化框架

ShutIt是一个易于使用的基于shell的自动化框架.它对基于python的expect库(pexpect)进行了包装.你可以把它看作是"没有痛点的expect".它可以通过pip进行安装. Hello World 让我们从最简单的例子开始吧.创建一个名为example.py的文件: import shutit session = shutit.create_session('bash') session.send('echo Hello World', echo=True) 运行这

基于Selenium的web自动化框架

1 什么是selenium Selenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览

如何基于Python构建一个可扩展的运维自动化平台

嘉宾简介 刘天斯 从事互联网运维工作已13年,目前就职于腾讯-互动娱乐部,负责游戏大数据的运营,曾就职于天涯社区,担任首席架构师/系统管理员. 热衷开源技术的研究,包括系统架构.运维开发.负载均衡.缓存技术.数据库.NOSQL.分布式存储.消息中间件.大数据及云计算.Mesos.Docker.DevOps等领域.擅长大规模集群的运维工作,尤其在自动化运维方面有着非常丰富的经验.同时热衷于互联网前沿技术的研究,活跃在国内社区.业界技术大会,充当一名开源技术的传播与分享者. 导言 受 Reboot

Web自动化框架搭建——前言

1.web测试功能特性 a.功能逻辑测试(功能测试),这一块所有系统都是一致的,比如数据的添加.删除.修改:功能测试案例设计感兴趣和有时间的话可以另外专题探讨: b.浏览器兼容性测试,更重要的是体验这块,想提供建设性建议,是建立在业务场景.用户使用的深刻理解基础上,然后对产品目规划理解是否合理,提出自己的看法与想法:体验这块,一定要有一个比较全局的概念,换个意思说,就是应该站在产品经理的角度去看系统,看系统的各个子功能.各个子功能协调是否合理.是否还有更优建议.而不仅仅只局限一个界面.一个菜单.

webTest-----webUI自动化框架

webTest框架介绍 地址 https://github.com/wuranxu/webTest 希望大家能够喜欢!!! 简介 本框架基于Python3+selenium3+unittest组成,用户以Page Object的模式编写用例.元素的定位和操作按照页面划分,达到Web端自动化回归测试的目的,并生成测试报告.浏览器兼容性暂时未完善. 本例子展示了一个必应首页搜索"龙珠超"的测试用例,比较简陋. 运行日志 过程截图 效果展示 快速上手 从远程仓库拉取代码 git clone

3分钟手把手带你搭建基于selenium的自动化框架

1 .什么是seleniumSelenium 是一个基于浏览器的自动化工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.Selenium WebDriver 和Selenium Grid: Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,python等)的形式导出成测试用例. Selenium WebDriver:提供Web自动化所需的API,主要用作浏览

CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维

前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括使用方式,及相关介绍,都容易引人误解. 为此,我打算重新写个系列来介绍最新的版本,让大伙从传统的ORM编程过渡到自动化框架型思维编程(自已造的词). 于是:这个新系列的名称就叫:CYQ.Data 从入门到放弃ORM系列 什么是:CYQ.Data 1:它是一个ORM框架. 2:它是一个数据层组件. 3

jsWindow 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。 注释:没有应用于 window 对象的公开标准,不过所有浏览器都支持该对象。 Window 对象集合 集合 描述 frames[] 返回窗口中所有命

一.JSX简介 JSX就是Javascript和XML结合的一种格式.React发明了JSX,利用HTML语法来创建虚拟DOM.当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析. 如下(JS写法) var child1 = React.createElement('li', null, 'First Text Content'); var child2 = React.createElement('li', null, 'Second Text Content'); var