手机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 sleepd = 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
手机APP自动化之uiautomator2 +python3 UI自动化相关推荐
- python(十二)Uiautomator2搭建UI自动化框架实战
前言 由于公司UI自动化框架底层用的是Uiautomator2,所以我就用Uiautomator2搭了一套UI自动化框架,并运用某软件做了一个实战,思路其实和之前写的Appnium一样的 ps:这里其 ...
- android ui自动化框架选型,Appium UI 自动化框架之我见 (开源)
APP UI Automation Framework 一个基于 Appium 1.8.1.TestNG,Page Object 模式开发的 UI 自动化测试框架 介绍文档 结构图 基本功能 每秒生成 ...
- python windows ui自动化_appium+python+windows UI自动化 四.简单使用Appium客户端
前期准备 关闭 app adb shell pm path cn.gloud.client.mobile 启动APP adb shell am start -W -n cn.gloud.clien ...
- UI自动化框架如何设计及搭建?
目录 UI自动化框架 自动化原则: 如何减少自动化维护成本? UI自动化框架优化方案:(在不增加维护成本前提下) UI自动化脚本可分为3种: 已经实现自动化的模块可以不做手工测试了吗? UI自动化公式 ...
- 如何用手机APP实现PLC远程监控
一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备.农业.市政等多种应用长江.在互联网+制造的大背景下,一种实现软硬件对接的手 ...
- 用手机APP实现PLC远程监控
一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备中.在互联网+制造的大背景下,一种实现软硬件对接的手机APP远程监控PLC系 ...
- 【自动化测试】推荐一款超好用的ui自动化工具--uiautomator2
今天直接进入正文,给大家推荐一款超级好用的ui自动化工具 uiautomator2 正文来了 我将从以下几个方面,向大家介绍 uiautormator2,希望该项目的作者看到我的文章之后,可以请我喝杯 ...
- python+uiautomator2 UI自动化
python+uiautomator2 UI自动化 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库. 其底层基于Google uiautomator,Goo ...
- 推荐一款超好用的ui自动化工具--uiautomator2
给大家推荐一款超级好用的ui自动化工具 uiautomator2 先上目录 简要介绍 实现原理 安装步骤 使用简介 优点缺点 简要介绍 项目地址:https://github.com/openatx/ ...
最新文章
- myeclipse java可视化_使用MyEclipse可视化开发Hibernate实例
- 【AI杂谈】从一篇参考文献比正文还长的文章,杂谈深度学习综述
- threejs渲染器剔除模式
- MicroNets:更小更快更好的MicroNet,三大CV任务都秒杀MobileNetV3
- 连载四:Oracle升级文章大全(完结篇)
- [SQL]实战之统计出当前各个title类型对应的员工当前薪水对应的平均工资
- Windows XP 下安装Perl cpan模块
- Android模拟器无法启动
- homebrew osx下面最优秀的包管理工具
- SVN服务更换小记(由subversion更换为VisualSVN)
- php 开源邮件系统,20款 Web Mail PHP开源项目
- python去除视频马赛克_十行python代码教你如何去除万恶的,如s一样的马赛克
- 黑马python15期解压密码_2018年传智播客黑马python+人工智能 15期
- 改写TCPMP的界面
- 软件测试周刊(第32期):沙漠中藏着一口井
- SmartGit功能介绍
- C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
- python可视化神器——pyecharts(词云图雷达图极坐标系)
- www.a-d-w-a-r-e.com病毒清除方法
- OSPF协议之邻居建立
热门文章
- ASP.NET中利用cookies保持客户端信息
- windows10 vs2013控制台工程中添加并编译cuda8.0文件操作步骤
- 【Ubuntu】安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win?
- Qt中文手册 之 QTreeWidget
- python爬取电影评分_用Python爬取猫眼上的top100评分电影
- 敲的php代码怎么预览,php代码实现文件的预览
- splitcontainer如何设置两边一样打_墙洞加筋如何计算?
- Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)
- c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...
- JS基础类型和引用类型