uiautomator2,一款比appium还好用的app自动化测试框架
一说到app自动化测试,第一反应就会想到appium这个框架,和web端的selenium一样,但是对于appium来说,搭建环境非常重要,很多人都被环境搞得望而却步了,放弃了appium。
下面说的uiautomator2这个框架,环境比appium简单多了,可以值得一学的
1.uiautomator2简介和原理分析
uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。它本来是Google提供的一个自动化测试的Java库,后来发展了python-uiautomator2,封装了谷歌自带的uiautomator测试框架,提供便利的python接口,用它可以很便捷的编写python脚本来实现app的自动化测试
原理解析:
python端:运行脚本,往移动端发送HTTP请求
移动端:安装atx-agent,然后atx-agent启动uiautomator2服务进行监听,并识别python脚本,转换为uiautomator2的代码。
移动设备通过WIFI(同一网段)或USB接收到PC上发来的HTTP请求,执行制定的操作
2.安装
1.首先跟appium一样,要先安装adb
下载androidsdk,并配置环境变量
2.安装uiautomator2
这个不好安装,这里推荐用清华源或者豆瓣源来安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --pre -U
uiautomator2
3.设备初始化:首先设备连接到PC,并能够adb devices发现该设备
我这里用的是夜神模拟器
4.在设备上安装atx-agent
执行 python -m uiautomator2 init
夜神模拟器就自动安装了,手机真机可能需要点击同意安装
3.验证设备是否连接成功
首先看设备是否连接上了
导包并重命名 import uiautomator2 as ut
连接设备是ut.connect(‘127.0.0.1:62001’)
import uiautomator2 as ut
d=ut.connect('127.0.0.1:62001')
print(d.device_info)
打印出来这个设备的所有信息
这就说明连接是成功的
接下来需要定位元素,这里介绍一款好用的定位工具:weditor ,不仅可以实时定位,而且还可以在里面编写调试代码
4.安装weditor
执行 pip install --pre weditor
可能会超时,这里推荐豆瓣源安装,亲测可用
pip install -i https://pypi.douban.com/simple weditor
安装成功
执行
python -m weditor
会在浏览器打开一个网页
打开之后是这样的
在模拟器上运行app,点击Dump Hierarchy,就可以在浏览器显示出手机的屏幕了,打开实时,能实时看到
5.打开app并编写代码
uiautomator2查看当前运行的app的命令是uiautomator2 current
比如我在模拟器里打开今日头条,在cmd里执行uiautomator2 current
就会看到包名和当前类名
uiautomator2 打开app也比appium简单,直接用app_start方法就行了,现在来在pycharm里写代码
d=ut.connect('127.0.0.1:62001')
print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打开app
我现在要点击到登录页面,在weditor里查到元素定位,然后用d()就可以了,比appium里的find_element_by_xpath这种简单
下面是我写的代码
import uiautomator2 as ut
import time
d=ut.connect('127.0.0.1:62001')print(d.device_info)
d.app_start('com.ss.android.article.lite','com.ss.android.article.lite.activity.SplashActivity') #打开app
d.implicitly_wait(10)
d(text='热榜').click()
d(text='未登录').click()
d(text="登录").click()
d(text="手机号").send_keys('13409012321')
d(text='请输入验证码').send_keys('123456')
d(text='进入头条').click()
uiautomator2里还有更多好玩好用的方法,慢慢学习,会爱上这个框架的
uiautomator2,一款比appium还好用的app自动化测试框架相关推荐
- APP自动化测试框架搭建(五)--Python+Appium+pytest-html
第一章 APP自动化环境搭建(Mac版) 第二章 APP自动化环境搭建(Windows版) 第三章 adb命令 第四章 元素定位.元素操作 第五章 APP自动化测试框架搭建 Python+Appium ...
- APP自动化测试框架搭建(六)--uiautomator2、web-editor基础操作
第一章 APP自动化环境搭建(Mac版) 第二章 APP自动化环境搭建(Windows版) 第三章 adb命令 第四章 元素定位.元素操作 第五章 APP自动化测试框架搭建 Python+Appium ...
- APP自动化测试框架-UiAutomator2基础入门
前言 很早以前,我用uiautomator+java实践过Android APP自动化测试,不过今天要提的不是uiautomator,而是uiautomator2.听起来uiautomator2像是u ...
- android app自动化测试框架Appium资料整理
by Ruiming.Lv 1 自动化测试 1.1 自动化测试简介 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程.从广义上来讲,一切通过工具(程序)的方式来代替或辅助手工测试的 ...
- Appium App自动化测试框架【一】
本文为博主原创,未经许可严禁转载. 本文链接:https://blog.csdn.net/zyooooxie/article/details/113841107 2018年我开始在csdn写博客,最初 ...
- Python Appium移动端app自动化测试框架
最近有时间把前面写的Python UI自动化脚本转换成了适用于App的测试,整体架构没多少变化,先看整体架构 先从入口说起: (1)config.ini:运行前进行基本的配置,配置文件,由于是借鉴的U ...
- uiautomator2 App自动化测试框架【一】
本文为博主原创,未经授权,严禁转载及使用. 本文链接:https://blog.csdn.net/zyooooxie/article/details/123916767 怎么也想不到,我又开始写app ...
- 2022软件测试技能 APP自动化测试 Python+Appium+Uiautomator2 实战教程
系列文章目录 提示:阅读本章之前,请先阅读目录 文章目录 系列文章目录 前言 一.Appium 原理 二.环境搭建,一键搞定 1. 安装Java JDK 2. Android SDK 安装与配置 3. ...
- APP自动化测试(一)-appium
一:APP自动化测试框架比较 跨应用:比如在测试抖音的同时还想测试微信 Hybrid:混合应用程序 二:Appium自动化测试框架 官网:http://appium.io/ 优点: 1:跨架构.支持原 ...
最新文章
- 四肢切割_四肢瘫痪者用大脑信号和先进的假肢完成吃饭动作
- Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
- spring boot / cloud (十七) 快速搭建注册中心和配置中心
- 【Linux小技巧】开启关闭蜂鸣声
- 【软件工程】软件项目的利益相关者与系统相关人员
- 怎样在word中同时输入上下标
- 【codevs1993】草地排水,网络流入门(dinic+ispa)
- 【英语学习】【Level 07】U06 First Time L1 My very first trip
- 滇西应用技术大学有没有计算机专业,学校介绍
- mysql获取当前时间示范,mysql 实时显示当前运行的sql语句
- WPF-使用代码创建Grid行与列,并将控件添加到Grid中的指定行指定列
- html如何上下滚动字幕,html页面实现滚动字幕
- IDEA打包失败解决方案
- Reeder的本地使用
- 免费的文档翻译教程;免费将很长的文档英文翻译成中文
- Robust Transmit Beamforming for Secure ISAC
- 计算机蓝牙功能,笔记本电脑蓝牙在哪里?笔记本怎么打开蓝牙功能Bluetooth
- MATLAB函数合辑
- 数据结构与算法-最小生成树之克鲁斯卡尔(Kruskal)算法
- Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记
热门文章
- java中的算法(一致性hash算法和数据结构的问题)
- C与C++中++i和i++的区别
- 6-27 实验9_7_设计函数int getVowel(char str[],char vowel[]); (100 分)
- AAAI2020 A pre-training based personalized dialogue generation model with persona-sparse data
- pcap_findalldevs_ex 文件没有定义
- .Net Core 文件的上传下载
- 【TS】1010- 细数 10 个 TypeScript 奇怪的符号
- 与某流氓网站的血泪交战史
- 美团点评暑期实习个人总结
- P7826 「RdOI R3」RBT