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浏览 ...
随机推荐
- sparksql 练习题两道
第一题:select '{"id":1,"name":{"url":"http://xxx/yyy/zz/test.js" ...
- linux 如何查找命令的路径(which搜索系统命令,whichis搜索文件)
http://hi.baidu.com/longredhao/item/911356ea2d8bed3687d9deed linux 下,我们常使用 cd ,grep,vi 等命令,有时候我们要查到这 ...
- Python - Tuple 怎么用,为什么有 tuple 这种设计?
背景 看到有同学很执着的用 tuple,想起自己刚学 python 时,也是很喜欢 tuple,为啥?因为以前从来没见过这种样子的数据 (1,2), 感觉很特别,用起来也挺好用 i,j=(1,2), ...
- 最长无重复子串问题 leetcode 3
一.代码及注释 class Solution { public: int lengthOfLongestSubstring(string s) { int n = s.size(); //字符串的长度 ...
- mysql主从之keepalive+MySQL高可用
一 keepalive介绍 1.1 keepalived 是什么 keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障. 1.2 keepalived 工作原理 keepa ...
- mysql主从之基于atlas读写分离
一 mysql读写分离的概念 写在主库,主库一般只有一个,读可以分配在多个从库上,如果写压力不大的话,也能把读分配到主库上. 实现是基于atlas实现的,atlas是数据库的中间件,程序只需要连接at ...
- echarts实现group关系图案例
官网案例:https://www.echartsjs.com/examples/zh/editor.html?c=graph-simple 自己在项目中实现了两个group图: 1.先看实现效果,两个 ...
- Mysql 最全查询语句
基本查询语句及语法: select distinct from where group by having limit 一.单表查询 前期表与数据准备: # 创建一张部门表 create table ...
- JAVA字节码文件之结构
开发工具:IEDA.JDK1.8.WinHex 一.字节码文件结构 源代码 package com.jalja.java.bytecode; /** * @Auther: XL * @Date: 20 ...
- AcWing 244. 谜一样的牛|树状数组
传送门 题目描述 有n头奶牛,已知它们的身高为 1~n 且各不相同,但不知道每头奶牛的具体身高. 现在这n头奶牛站成一列,已知第i头牛前面有Ai头牛比它低,求每头奶牛的身高. 输入格式 第1行:输入整 ...