题记: 之前一直用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自动化相关推荐

  1. python(十二)Uiautomator2搭建UI自动化框架实战

    前言 由于公司UI自动化框架底层用的是Uiautomator2,所以我就用Uiautomator2搭了一套UI自动化框架,并运用某软件做了一个实战,思路其实和之前写的Appnium一样的 ps:这里其 ...

  2. android ui自动化框架选型,Appium UI 自动化框架之我见 (开源)

    APP UI Automation Framework 一个基于 Appium 1.8.1.TestNG,Page Object 模式开发的 UI 自动化测试框架 介绍文档 结构图 基本功能 每秒生成 ...

  3. 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 ...

  4. UI自动化框架如何设计及搭建?

    目录 UI自动化框架 自动化原则: 如何减少自动化维护成本? UI自动化框架优化方案:(在不增加维护成本前提下) UI自动化脚本可分为3种: 已经实现自动化的模块可以不做手工测试了吗? UI自动化公式 ...

  5. 如何用手机APP实现PLC远程监控

    一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备.农业.市政等多种应用长江.在互联网+制造的大背景下,一种实现软硬件对接的手 ...

  6. 用手机APP实现PLC远程监控

    一.应用需求 随着工业生产.制造环节的不断深化,工业设备的结构越来越复杂,借助PLC实现的自动化控制技术被广泛应用于工业设备中.在互联网+制造的大背景下,一种实现软硬件对接的手机APP远程监控PLC系 ...

  7. 【自动化测试】推荐一款超好用的ui自动化工具--uiautomator2

    今天直接进入正文,给大家推荐一款超级好用的ui自动化工具 uiautomator2 正文来了 我将从以下几个方面,向大家介绍 uiautormator2,希望该项目的作者看到我的文章之后,可以请我喝杯 ...

  8. python+uiautomator2 UI自动化

    python+uiautomator2 UI自动化 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库. 其底层基于Google uiautomator,Goo ...

  9. 推荐一款超好用的ui自动化工具--uiautomator2

    给大家推荐一款超级好用的ui自动化工具 uiautomator2 先上目录 简要介绍 实现原理 安装步骤 使用简介 优点缺点 简要介绍 项目地址:https://github.com/openatx/ ...

最新文章

  1. myeclipse java可视化_使用MyEclipse可视化开发Hibernate实例
  2. 【AI杂谈】从一篇参考文献比正文还长的文章,杂谈深度学习综述
  3. threejs渲染器剔除模式
  4. MicroNets:更小更快更好的MicroNet,三大CV任务都秒杀MobileNetV3
  5. 连载四:Oracle升级文章大全(完结篇)
  6. [SQL]实战之统计出当前各个title类型对应的员工当前薪水对应的平均工资
  7. Windows XP 下安装Perl cpan模块
  8. Android模拟器无法启动
  9. homebrew osx下面最优秀的包管理工具
  10. SVN服务更换小记(由subversion更换为VisualSVN)
  11. php 开源邮件系统,20款 Web Mail PHP开源项目
  12. python去除视频马赛克_十行python代码教你如何去除万恶的,如s一样的马赛克
  13. 黑马python15期解压密码_2018年传智播客黑马python+人工智能 15期
  14. 改写TCPMP的界面
  15. 软件测试周刊(第32期):沙漠中藏着一口井
  16. SmartGit功能介绍
  17. C语言程序设计教程 北京邮电,C语言程序设计教程(第3版)/ 杨路明 9787563543403 北京邮电...
  18. python可视化神器——pyecharts(词云图雷达图极坐标系)
  19. www.a-d-w-a-r-e.com病毒清除方法
  20. OSPF协议之邻居建立

热门文章

  1. ASP.NET中利用cookies保持客户端信息
  2. windows10 vs2013控制台工程中添加并编译cuda8.0文件操作步骤
  3. 【Ubuntu】安装Ubuntu+Win双系统后,每次开机默认是进入Ubuntu,如何设置成默认进入Win?
  4. Qt中文手册 之 QTreeWidget
  5. python爬取电影评分_用Python爬取猫眼上的top100评分电影
  6. 敲的php代码怎么预览,php代码实现文件的预览
  7. splitcontainer如何设置两边一样打_墙洞加筋如何计算?
  8. Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)
  9. c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...
  10. JS基础类型和引用类型