atx测试框架实现手机应用UI自动化测试
# 安装
pip install -U pytest
# 查看安装版本
pip show pytest
# 或者
pytest --version
pip install --pre -U uiautomator2 #默认安装最新版本
pip install uiautomator2=0.1.11#指定版本安装
# 从github下载atx-agent文件,并推送到手机。在手机上安装包名为`com.github.uiautomator`的apk
$ python -m uiautomator2 init
success
pip install selenium
pip install --pre weditor
python -m atx gui
# -*- coding: utf-8 -*- import atx
import os
from PIL import Image
import pytest
import allure
from allure_commons.types import AttachmentType
from logzero import logger
from uiautomator2 import UiObjectNotFoundError
# from base.chromedrvier import ChromeDriver
from atx.ext.chromedriver import ChromeDriver ISMAC = 1
TIMEOUT = 10
@allure.step("{0}")
def connect_phone(devices):
global package_name,main_activity
# devices = "D6JNOV5PCANFAURW"
logger.info("连接:" + devices)
package_name = 'com.netease.cloudmusic'#网易云音乐APP的包名
main_activity = ".activity.LoadingActivity" #网易云音乐的activity
d = atx.connect(devices)#手机的devices name
d.start_app(package_name, main_activity)#启动网易云音乐app
return d @allure.step("{1}")
def click_text(atx_conn, action_m, text, timeout=TIMEOUT):
"""
点击安卓原生的控件
:param atx_conn:atx实例
:param action_m:执行的行为描述
:param text:需要查找的按钮的文本
:param timeout:等待
:return:
""" logger.info(action_m)
atx_conn(text=text).click(timeout=timeout)
report_jietu(atx_conn,action_m)#截图 @allure.step("{1}")
def click_id(atx_conn, action_m, id, timeout=TIMEOUT):
""" :param atx_conn: 连接实例
:param action_m: 操作描述
:param id: resureid
:param timeout: 超时时间
:return:
"""
logger.info(action_m)
atx_conn(resourceId = id).click(timeout=timeout)
report_jietu(atx_conn,action_m)#截图 def report_jietu(atx_conn,action_m):
"""
截图
:param atx_conn:atx实例
:param action_m:action_m,被用作图片名称
:return:
"""
image = screenshot(atx_conn,action_m)#截图
with open(image,"rb") as f :
file = f.read()
allure.attach(action_m,file,allure.attach_type.PNG)#截图附件 def screenshot(atx_conn,url):
"""
截图
:param atx_conn:atx实例
:param url:url,被用作图片名称
:return:
""" path = os.path.abspath(os.path.dirname(os.getcwd()))
if ISMAC:
path = path + "/report/image/%s.png" % (url)
else:
path = path + "\\report\\image\\%s.png" % (url)
imgname = path
atx_conn.screenshot(imgname)
img(imgname)
return imgname def img(image):
"""
对图片进行压缩,覆盖原图进行保存
:param image: 图片路径
:return:
""" im = Image.open(image)
# 获得图像尺寸
w, h = im.size
# print('原图尺寸: %sx%s' % (w, h))
# 缩放到25%:
im.thumbnail((w // 4, h // 4))
# 把缩放后的图像用jpeg格式保存:
im.save(image) @allure.feature('网易云音乐')
class Test_misuc(object):
@allure.story('进入每日推荐,点击播放第一首歌曲')
def test_meirituijian(self):#进入每日推荐,点击播放第一首歌曲
d = connect_phone("D6JNOV5PCANFAURW")#连接手机,启动云音乐
click_text(d,"点击每日推荐","每日推荐")#点击每日推荐
click_text(d,"点击播放全部","播放全部")#点击播放全部
click_id(d,"点击暂停播放按钮","com.netease.cloudmusic:id/tr")#点击暂停播放按钮
d.stop_app(package_name) #关闭云音乐 @allure.story('进入我喜欢的音乐,将第一首歌分享给好友')
def test_share(self):#分享歌曲给好友
d = connect_phone("D6JNOV5PCANFAURW")#连接手机,启动云音乐
click_text(d,"点击我的","我的")
click_text(d,"点击我喜欢的音乐","我喜欢的音乐")
click_id(d,"点击更多","com.netease.cloudmusic:id/a")
click_text(d,"点击分享","分享")
click_text(d,"点击分享微信好友","微信好友")
# driver = ChromeDriver(d).driver() #启动selenium 如果是webview页面的话,需要启动selenium,然后根据selenium的定位方式查找元素
click_text(d,"分享给唯安格","唯安格")
click_text(d,"点击分享","分享")
click_text(d,"点击返回网易云音乐","返回网易云音乐")
d.stop_app(package_name) if __name__ == '__main__':
a = Test_misuc()
a.test_meirituijian()
a.test_share()
运行上面代码并生成测试报告:
运行用例: py.test test_aa.py -s --alluredir ./reports
生成报告:allure generate --clean reports
其他工具启动:
启动weditor :python3 -m weditor
uiautomator2 初始化:python3 -m uiautomator2 init
启动atx gui: python3 -m atx gui
指定用例运行:py.test test_ddz.py::TestClass::test_share --alluredir ./reports
2、查看测试报告:执行完:allure generate --clean reports
命令之后,会在当前文件夹生成:allure-report文件夹,该文件下会有一个index.html的文件,只用浏览器打开index.html文件,可以查看生成的测试报告。
如下图:

allure生成测试报告的方法请看官方文档:https://docs.qameta.io/allure/#_pytest 参考:
atx测试框架实现手机应用UI自动化测试的更多相关文章
- 基于APPIUM测试微信公众号的UI自动化测试框架(结合Allure2测试报告框架)
框架初衷 前两周组内的小伙伴跟我说她现在测试的微信公众号项目(保险)每次上新产品时测试起来很费时,存在大量的重复操作(点点点),手工测试每个产品可能需要半天到一天的时间,复杂的产品需要两天. 由于保险 ...
- Ui自动化测试框架
为了提高我们的UI测试效率,我们引用Ui自动化测试框架,这里简单先描述一下,后续会详细补充: 了解一个测试框架,我们就需要了解一下源码,能看懂源码即可: 1.稳定先封装wait EC,电脑性能配置较好 ...
- 常用的自动化测试框架及测试框架的发展(Alpha)
前言:自动化测试在过去的20年已经有了很大的发展.最初的测试工具只提供了简单的捕捉/回访功能,维护性较差.而且脚本工具实现需要很强的开发技术和经验,而且数量众多的测试脚本加上没有文档记录因此维护起来较 ...
- Selenium 4 Java的最佳测试框架
几十年来,Java一直是开发应用程序服务器端的首选编程语言.尽管JUnit一直在与开发人员一起帮助他们进行自动化的单元测试,但随着时间的推移和测试行业的发展,特别是伴随着自动化测试的兴起,已经开发了许 ...
- UI自动化测试、接口测试等自动化测试策略
今天跟大家介绍UI测试.接口测试.单元测试主要内容,以及每种测试花费时间讨论.UI测试[Selenium]UI测试是最接近软件真实用户使用行为的测试类型.通常是模拟真实用户使用软件的行为,即模拟用户在 ...
- Google推出iOS功能性UI测试框架EarlGrey
经过了一段时间的酝酿后,Google很高兴地宣布了EarlGrey,一款针对于iOS的功能性UI测试框架.诸如YouTube.Google Calendar.Google Photos.Google ...
- APP的UI自动化测试框架及平台化探索
顾铮,10年+测试及测试开发相关经验,2014年加入京东,曾主导设计开发UI测试框架,参与CI测试平台建设,现负责iOS侧的工具,框架建设.在UI自动化,性能测试,单元测试方面有较深入研究,在App, ...
- 自动化测试中级篇——LazyAndroid UI自动化测试框架使用指南
原文地址https://blog.csdn.net/iamhuanggua/article/details/53104345 简介 一直以来,安卓UI自动化测试都存在以下两个障碍,一是测试工具Mo ...
- 避免重复造轮子的UI自动化测试框架开发
一懒起来就好久没更新文章了,其实懒也还是因为忙,今年上半年的加班赶上了去年一年的加班,加班不息啊,好了吐槽完就写写一直打算继续的自动化开发 目前各种UI测试框架层出不穷,但是万变不离其宗,驱动PC浏览 ...
随机推荐
- 牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树)
牛客wannafly 挑战赛14 B 前缀查询(trie树上dfs序+线段树) 链接:https://ac.nowcoder.com/acm/problem/15706 现在需要您来帮忙维护这个名册, ...
- Java 学习笔记(8)——匿名对象与内部类
一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...
- IDEA比较实用的插件之翻译插件(Translation)
插件名称:Translation 安装步骤:Mac 2019.2的IDEA安装步骤如下 InteIIij IDEA --> Preference --> Other Setting --& ...
- 谈谈模型融合之一 —— 集成学习与 AdaBoost
前言 前面的文章中介绍了决策树以及其它一些算法,但是,会发现,有时候使用使用这些算法并不能达到特别好的效果.于是乎就有了集成学习(Ensemble Learning),通过构建多个学习器一起结合来完成 ...
- 关于Qt中窗口的坐标
主要是给自己以后参考,所以不会太仔细的讲解. #include "mainwindow.h" #include <QApplication> #include<Q ...
- Kubernetes基本概念和术语之《Pod》
Pod是Kubernetes的最重要也最基本的概念.我们看到每个Pod都有一个特殊的被称为“根容器”的Pause容器对应的镜像属于Kubernetes平台的一部分.除了Pause容器,每个Pod还包含 ...
- mysql主从之LVS+keepalived+双主MySQL 负载均衡
LVS(Linux Virtual Server)即Linux 虚拟服务器,是一个的开源负载均衡项目,目前LVS 已经被集成到Linux 内核模块中.LVS 是四层负载均衡,也就是说建立在OSI 模型 ...
- Alpha阶段中间产物提交入口
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9865 git地址:https://e.coding.net/Eustia ...
- 洛谷$P4177\ [CEOI2008]\ order$ 网络流
正解:网络流 解题报告: 传送门$QwQ$ 开始看感$jio$长得好像和太空飞行计划差不多的,,,然后仔细康康发现还有租操作,,, 按一般的套路碰到这样儿的一般就先按非特殊化的建图然后考虑怎么实现这个 ...
- 《美国纽约摄影学院摄影教材》PDF教材
下载地址: 美国纽约摄影学院摄影教材(上册).pdf 美国纽约摄影学院摄影教材(下册).pdf 欢迎你到纽约摄影学院来,我们急切地等待着开课,你们也在 跃跃欲试了.那就让我们马上开始吧! 你已 ...