手机APP自动化之uiautomator2 +python3 UI自动化

题记: 之前一直用APPium直到用安卓9.0  发现uiautomatorviewer不支持安卓 9.0,点击截屏按钮 一直报错,百度很久解决方法都不可以,偶然间看见有人推荐:uiautomator2 就尝试使用 发现比appium要简单一些; 下面文字主要来自虫师的博客

一、Uiautomator2原理介绍

1.uiautomator2是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,目前仅支持android平台的原生应用测试,https://github.com/openatx/uiautomator2。但有两个缺点:

测试脚本只能使用Java语言。
    测试脚本必须每次被上传到设备上运行。

2.工作原理

分为两个部分:

PC上的python端:运行脚本,并向系统设备发送http请求

移动设备:移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

二、安装uiautomator2

pip install --pre uiautomator2

pip install pillow

三、初始化

部署相关的守护进程。

电脑连接上一个手机或多个手机, 确保adb已经添加到环境变量中,执行下面的命令会自动安装本库所需要的设备端程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch

python -m uiautomator2 init

安装完成,设备上会多一个uiautomator的应用。

配置手机设备参数:

有两种方法,一种是通过WIFI,另一种是通过USB数据线将手机链接电脑。 (我是通过USB这个方法,按照后手机会多一个ATX小汽车图标的软件)

WiFi连接更方便一点,需要保持PC和手机使用的一个WIFI,查看手机连接WIFI的IP地址。

定位元素:

我们可以借助Android SDK自的uiautomatorviewer查看元素,这就要求手机必须以USB的方式连接PC,我前面使用的是WIFI连接进行连接的。所以,openatx提供了另外一个工具weditor 来解决这个问题。

GitHub地址:https://github.com/openatx/weditor

1、安装:

pip install --pre --upgrade weditor

2、使用:

python3 -m weditor

默认会通过浏览器打开页面:http://atx.open.netease.com/

下面这个跟用uiautomatorviewer定位元素是一样的 而且多了xpath的定位语句,用起来更方便,

在页面左上角选择Android,输入设备IP(192.168.31.234),点击Connect按钮。

当我们操作完手机后,可以点击“Reload”按钮进行刷新,从而保持与设备上的界面保持同步。weditor 还可以帮我们生成代码。总之,你研究一下就会用了。

编写测试脚本 这里参考怎么去定位元素,在定位元素和启动APP 相对比APPium  要简单很多

这里针对魅族社区App进行测试。

import uiautomator2 as u2
from time import sleep

d = u2.connect(‘192.168.31.234‘)

# 启动App
d.app_start("com.meizu.mzbbs")

# 搜索
d(resourceId="com.meizu.mzbbs:id/j0").click()

# 输入关键字
d(resourceId="com.meizu.mzbbs:id/p9").set_text("flyme")

# 搜索按钮
d(resourceId="com.meizu.mzbbs:id/tp").click()

sleep(2)

# 停止app
d.app_stop("com.meizu.mzbbs")
 

app_start()和app_stop()用于启动和停止应用。

常用的定位方式:

  • ResourceId定位:
    d(resourceId="com.meizu.mzbbs:id/tp").click()
  • Text定位:
    d(text="精选").click()
  • Description定位:
    d(description="..").click()
  • ClassName定位:
    d(className="android.widget.TextView").click()

小结:其实关注该项目已经好几个月了,目前该项目已经趋于稳定,整个测试环境的搭建过程也要比Appium简单得多。

我是练习分割线



在尝试对APP进行登录的时候发现一个问题,在用APPium 是可以隐藏键盘进行输入, 用uiautomator2 发现不可以 ,一直卡主键盘没法办收起来提交失败;

最后尝试用物理返回,成功解决,

下面尝试用uiautomator2 打开微信小程序并进行授权 代码如下:

#链接设备
driver = u2.connect_usb("XXXX")
#打开APP
driver.app_start("com.tencent.mm")

time.sleep(3)
#下拉操作
driver.swipe(0.513,0.399, 0.513,0.6)
#通过文本定位打开小程序
driver(text="XX").click()

打开APP,并进行登录:

#定位driverdriver = u2.connect_usb("L081")#启动app
driver.app_start("com.XXX.XXXX")#通过id定位输入框输入账号密码
driver(resourceId="com.XXX.XXXX:id/login_username_et").set_text("test")
driver(resourceId="com.XXX.XXXX:id/login_password_et").send_keys("123456")
#通过物理返回,收齐键盘
driver.press("back")
time.sleep(2)
#点击登录
driver(resourceId="com.XXX.XXXX:id/login_commit_btn").click()

疑问:在校验还没涉及  如果有朋友涉及  请不吝赐教,谢谢

下面是原文链接和一些用法介绍:

原文:

https://www.cnblogs.com/fnng/p/8486863.html

用法:

https://blog.csdn.net/ricky_yangrui/article/details/81415365

原文地址:https://www.cnblogs.com/shoebill/p/10776353.html

时间: 2024-11-09 06:41:21

手机APP自动化之uiautomator2 +python3 UI自动化的相关文章

Mac下Appnium的Android的UI自动化环境搭建

1. 安装jdk:略 检查是否安装:执行命令java -version admindeMacBook-Pro-2:~ $ java -version java version "1.8.0_171" Java(TM) SE Runtime Environment (build 1.8.0_171-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode) 2.安装git:略 检查是否安装:git --ver

用手机APP实现PLC远程监控

用手机APP实现PLC远程监控系统一.应用需求随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备中.在互联网+制造的大背景下,一种实现软硬件对接的手机APP远程监控PLC系统以其远程.高效.便捷的管理特点逐渐被自动化生产企业熟悉和认可,成为节约人力成本,提高产品效益的重要手段.二.系统实现手机APP远程监控PLC系统由现场感知.网络传输.远程监测控制三部分组成,由于PLC一般使用专用的通讯协议,APP使用网络通讯协议,二者不能直接通讯,

堪比上万元的高级测试内容套餐(性能、自动化、手机APP、职业发展、管理)

以下为套餐的汇总与介绍(套餐就是多个单个课程的打包),方便大家查看. 如果要购买单个课程请点击这里:http://xqtesting.blog.51cto.com/4626073/1669386 套餐 介绍 购买地址 [热卖]移动手机APP测试视频课程套餐 分为三部视频初级篇.进阶篇.高级篇,层层递进,是我们快速学习的必备手册 http://edu.51cto.com/pack/view/id-343.html [NEW]Java项目性能测试实战和环境搭建合集 全新视频,无废话,接地气,重点内容

自动化--APP UI自动化--Airtest学习

看到其他同事在使用airtest,于是学习一下 AirtestIDE提供了一个比较全的官方文档,讲解.操作都蛮细的 http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/index.html 使用airtest执行ui自动化,首先要: 1.安卓 AirtestIDE 官方安装  http://airtest.netease.com/ 或 网盘安装: 链接:https://pan.baidu.com/s/1IaTR_ZPxy81mCPwGsyR

【视频】手机APP功能、性能、自动化、专项测试

不过多解释,请点击链接看课程目录你就懂得了 移动手机APP测试从零开始(初级篇) http://edu.51cto.com/course/course_id-1923.html 移动手机APP测试从零开始(中级篇) http://edu.51cto.com/course/course_id-2078.html 移动手机APP测试从零开始(xx篇) 即将上线 移动手机APP测试从零开始(xx篇) 即将上线

网易 UI 自动化工具 Airtest 浅用记录

一 使用目的 该工具主要是面向游戏UI测试基于图像识别,如游戏框架unity,Cocos-js以及网易内部的游戏框架 同时也支持原生Android App 的基于元素识别的UI自动化测试. 本文主要使用目的是做安卓原生App的元素UI自动化. 二 资源索引 官方资源 网易游戏新开源的 UI 自动化测试项目 [Airtest Project] Airtest官网 Airtest官网上手教程 AirtestProject Github主页 AirtestIDE官方中文文档 Airtest 官方中文文

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

简介(百度的): uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作 优缺点: 优点: 1.环境搭建简单 2.元素查找有专用的weditor,相比其他简单明了 3.代码语法简单,容易学习理解 4.相比appium不用启动客户端 5.可以使用wifi以及usb连接 缺点: 1.兼容性相对较差 2.功能相

【Android测试】UI自动化代码优化之路(临时发布)

关于UI自动化的抱怨 听过不少人这样讲 "UI自动化非常不稳定,需求一改,界面一遍,全部都费了".我相信做过的人可能也会有同感.既然这个问题一直都是存在的,那么为什么没有人仔细分析原因呢? 我的老板georgeliao举了这样一个例子:每当需求变化的时候,开发没有跳起来,反而是测试跳了起来.然后不断的抱怨,界面元素全都改了,我的自动化的用例全部都要废弃掉了.那么我们是否想过,为什么开发可以从容不破的应对产品不断变化的需求?而我们却不能呢? 业内不少人也都放弃了UI自动化,觉得接口测试才

appium Ui自动化调起应用点击

appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] args) throws Exception { AndroidDriver driver; //DesiredCapabilities 负责启动服务端时的参数设置. DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapabili