Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告

这篇文章主要介绍了Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

本文主要分为以下几个部分

  1. 安装Python3

  2. 安装Python3的Appium库

  3. 安装Android SDK

  4. 安装JDK

  5. 安装Appium

  6. 安装模拟器

  7. 编写测试脚本并生成测试报告

项目示例下载地址: https://github.com/lixk/apptest

正文

一、安装Python3

直接登录Python官网https://www.python.org/,下载最新版本即可。

图片

然后安装的时候注意一下安装路径,比如我的安装路径D:\Python37,接下来会用到这个安装路径。

二、安装Python3的Appium库

打开Python安装目录,找到Scripts文件夹,点进去,示例:

图片

在地址栏上输入cmd,然后回车,打开控制台:

图片

在控制台里输入命令pip install Appium-Python-Client,然后回车

图片

看到下图的提示就表明安装成功了

图片

三、安装Android SDK

我懒得折腾,所以就直接下载了Android Studio
下载地址
https://developer.android.com/studio/#downloads

图片

下载完成开始安装

图片

如果需要安装自带的模拟器,就把这一项勾选上,然后Next,接下来选择安装路径,比如我的同样放在D

图片

接下来一路Next,到了选择SDK的页面注意一下

图片

选择Custom,这样可以只安装自己喜欢的部分,接下来选择主题,当然这个以后可以在Android Studio里边改

图片

继续Next,到达定制组件页面,如下图

图片

设置一下SDK的安装路径,比如我的是D:\Android\SDK,接下来继续Next…finish。然后就进入了缓慢的下载环节,让它在这儿慢慢的下载吧,下载完成后就好了。我们可以进入下一节了。

四、安装JDK

这里我使用的是JDK8,下载地址
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

接受协议,然后选择对应平台下载即可

图片

接下来安装过程比较简单,也是一路Next,注意选择一下安装路径,比如我的安装路径D:\Java\jdk1.8

图片

五、安装Appium

官网地址 http://appium.io/

图片

点击下载按钮会到GitHub的下载页面,选择对应平台下载

图片

Windows就选这个(快捷下载)

安装完成后,启动Appium,host和port默认的即可,然后编辑下配置信息

图片

图片

然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到

图片

如果使用真机测试,插上手机就可以开始编写脚本测试了。但是呢,由于手边没有数据线,就采用模拟器了,所以有了下一节。

六、安装模拟器

这里使用的是夜神模拟器下载地址 https://www.yeshen.com/,之所以不用Android自带的,是因为记得多年前启动一次要好久,然后就再也没用过。
这个也没有什么好说的,也是注意一下安装路径,然后一路下一步就好了。
安装完成后要进行一下简单修改:

  • 打开安装目录,进入到bin目录(比如:D:\Nox\bin

  • 把第三节里安装好的Android SDK里的adb.exe文件(比如我的在D:\Android\SDK\platform-tools目录下)复制到该目录覆盖掉该目录已存在的adb.exe文件

  • 删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe

  • 启动模拟器

  • 再该目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices,看到如下信息就表示成功了

图片

在模拟器里安装测试apk文件,这里以一个计算器为例,直接将apk文件拖到模拟器里即可

图片

继续在刚刚的控制台窗口里输入aapt dump badging D:\apk\com.youdao.calculator-2.0.0.apk,其中D:\apk\com.youdao.calculator-2.0.0.apk是测试apk的完整路径。

图片

可以看到安装包的信息都打印出来了,记录下红框里这两个名称,待会儿写测试脚本的时候要用。
注意,如果模拟器重启了,需要执行第5步的nox_adb.exe connect 127.0.0.1:62001 七、编写测试脚本并生成测试报告

1.创建测试用例目录testcase,在该目录下创建test_app.py文件

  1. import time

  2. import unittest

  3. from appium import webdriver

  4. class MyTests(unittest.TestCase):

  5. # 测试开始前执行的方法

  6. def setUp(self):

  7. desired_caps = {'platformName': 'Android', # 平台名称

  8. 'platformVersion': '4.4.2', # 系统版本号

  9. 'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看

  10. 'appPackage': 'com.youdao.calculator', # apk的包名

  11. 'appActivity': 'com.youdao.calculator.activities.MainActivity' # activity 名称

  12. }

  13. self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium

  14. self.driver.implicitly_wait(8)

  15. def test_calculator(self, t=500, n=4):

  16. """计算器测试"""

  17. time.sleep(3)

  18. window = self.driver.get_window_size()

  19. x0 = window['width'] * 0.8 # 起始x坐标

  20. x1 = window['width'] * 0.2 # 终止x坐标

  21. y = window['height'] * 0.5 # y坐标

  22. for i in range(n):

  23. self.driver.swipe(x0, y, x1, y, t)

  24. time.sleep(1)

  25. self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()

  26. for i in range(6):

  27. self.driver.find_element_by_accessibility_id('Mathbot Editor').click()

  28. time.sleep(1)

  29. btn_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3]/android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'

  30. self.driver.find_element_by_xpath(btn_xpath.format(7)).click()

  31. self.driver.find_element_by_xpath(btn_xpath.format(10)).click()

  32. self.driver.find_element_by_xpath(btn_xpath.format(8)).click()

  33. time.sleep(3)

  34. # 测试结束后执行的方法

  35. def tearDown(self):

  36. self.driver.quit()

2.创建run.py文件

  1. import os

  2. import time

  3. import unittest

  4. from HTMLTestRunner import HTMLTestRunner

  5. test_dir = './testcase'

  6. discover = unittest.defaultTestLoader.discover(start_dir='./testcase', pattern="test*.py")

  7. if __name__ == "__main__":

  8. report_dir = './test_report'

  9. os.makedirs(report_dir, exist_ok=True)

  10. now = time.strftime("%Y-%m-%d %H-%M-%S")

  11. report_name = '{0}/{1}.html'.format(report_dir, now)

  12. with open(report_name, 'wb')as f:

  13. runner = HTMLTestRunner(stream=f, title="测试报告", description="本测试报告内容包含超级计算器的简单测试")

  14. runner.run(discover)

导出测试报告用到了HTMLTestRunner,但是Python3的好像有问题,在网上找了两个修改后支持Python3的, 需要的话可以在本文尾部的示例项目中下载。

3.运行run.py文件
等程序运行完之后即会在test_report目录下生成测试报告

图片

图片

在浏览器里打开即可看到报告内容,示例

图片

到此,全部完成。如果有空的话可以再补充下Appium的使用,比如元素定位之类的,希望本文能帮到初学自动化测试的同学。
项目示例下载地址 https://github.com/lixk/apptest
艾玛,罗嗦这么多,都八点了还没吃晚饭,好饿,今天就先到这里了。


2019/5/21 补充

如果配置跟上边那几步都一致,确实没问题,结果不能正常运行。那么问题可能出在模拟器配置。下边补充下我这边的模拟器配置。

图片

图片

代码中的'platformVersion': '4.4.2'就是上图中的Android版本。

如果还是有许多人跑不起来,接下来可以考虑抽空录个操作视频,哈哈哈。

到此这篇关于Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告的文章就介绍到这了

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/325436.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K-CU12和利时工控单元

K-CU12和利时工控单元。控制策略组态,使用专用的组态软件 人机界面HMI设计:操作员站画面设计,使用专用的组态软件 K-CU12和利时工控单元文件组态 2文档管理软件 在工程师站上进行系统组态的主要工作: K-CU12和利时工控单元。系统配…

【全开源】Fastflow工作流系统(源码搭建/上线/运营/售后/维护更新)

一款基于FastAdminThinkPHP开发的可视化工作流程审批插件,帮助用户基于企业业务模式和管理模式自行定义所需的各种流程应用,快速构建企业自身的流程管控体系,快速融合至企业协同OA办公系统。 提供全部无加密服务端源码和前端源代码&#xff0…

如何在 Linux / Ubuntu 上下载和安装 JMeter?

Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 安装 Java 要下载 Java&…

【计算机网络篇】数据链路层(10)在物理层扩展以太网

文章目录 🍔扩展站点与集线器之间的距离🛸扩展共享式以太网的覆盖范围和站点数量 🍔扩展站点与集线器之间的距离 🛸扩展共享式以太网的覆盖范围和站点数量 以太网集线器一般具有8~32个接口,如果要连接的站点数量超过了…

使用Three.js绘制快速而逼真的水

本文将利用GPUComputationRenderer来实现水波纹的绘制,相似的案例可以看threejs官方的GPGPU Water示例。更多精彩内容尽在数字孪生平台。 什么是 GPGPU GPGPU代表通用图形处理单元(General-Purpose Graphic Processing Unit),意思…

从0开始linux(2)——热键、如何查阅手册

欢迎来到博主的专栏——从0开始linux 博主ID:代码小豪 博主使用的linux发行版:CentOS 7.6 文章目录 热键[Tab]热键Ctrl cshift[pageup]和[pagedown] 查阅手册\-\-help在线手册maninfo手册 热键 我们的命令行模式中存在很多的组合热键,这些按…

神经网络中的算法优化(皮毛讲解)

抛砖引玉 在深度学习中,优化算法是训练神经网络时至关重要的一部分。 优化算法的目标是最小化(或最大化)一个损失函数,通常通过调整神经网络的参数来实现。 这个过程可以通过梯度下降法来完成,其中梯度指的是损失函数…

利用“AnaTraf“网络流量分析仪轻松诊断和优化网络

网络性能监测和诊断(NPMD)是网络管理和优化的重要环节,准确快速地定位和排除网络故障对于保障业务正常运转至关重要。作为一款专业的网络流量分析设备,AnaTraf网络流量分析仪凭借其强大的流量分析和故障诊断功能,为网络管理者提供了一个高效的网络优化解决方案。 全面掌握网络…

计算机网络实验1:交换机基本配置管理

实验目的和要求 安装Packer Tracer,了解Packer Tracer的基本操作掌握交换机基本命令集实验项目内容 认识Packet Tracer软件 交换机的基本配置与管理 交换机的端口配置与管理 交换机的端口聚合配置 交换机划分Vlan配置 实验环境 硬件:PC机&#x…

体验MouseBoost PRO,让Mac操作更高效

还在为Mac的右键功能而烦恼吗?试试MouseBoost PRO for Mac吧!这款强大的鼠标右键增强软件,能让你通过简单操作即可激活多种实用功能,让你的工作变得更加轻松。其高度定制化的设计,更能满足你的个性化需求。赶快下载体验…

【ubuntu】ubuntu-18.04开机卡在Starting User Manager for UID 120....问题解决方案

错误截图 解决方案 启动系统,开机界面单击按键esc键,注意需要将鼠标定位到菜单界面,移动键盘上下键选择Advanced options for Ubuntu 进入如下菜单,选择recovery mode 回车之后会弹出如下界面,选择如下root&#xff0…

瀚高数据库(HighGoDB)Windows安装使用

1.下载 2.安装 瀚高数据库下载与安装(Windows版)-CSDN博客 3.连接工具 4.建库、建表操作 瀚高数据库管理工具-CSDN博客 *报错Cant access non-default database,需要右键数据库-设为活动对象 5.导入外部数据(迁移、对比&…

生信人写程序1. Perl语言模板及配置

生物信息领域常用语言 个人认为:是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛,我常用的有…

爱普生推出5G基站可用耐高温高稳定性温补晶振

爱普生推出了六款新的温补晶振型号:TG7050CKN,TG7050SKNTG7050CMN,TG7050SMN,TG-5510CA,TG-5511CA。这几款的特点就是耐高温温度可达105℃C高温,而且都是高稳定性温补晶振,而且都是7050尺寸,这个…

AVL 树的理解和简单实现

目录 1. AVL 树 1.1. AVL 树的概念 1.2. AVL 树的性质 2. AVL 树的框架如下 2. AVL树的 插入 2.1. 平衡因子的更新 2.2.1. 平衡因子更新的第一种情况 2.2.2. 平衡因子更新的第二种情况 2.2.3. 平衡因子更新的第三种情况 2.2.4. 平衡因子更新的代码框架如下 2.2. AV…

Centos 中如何汉化man命令

刚学Linux,记不住命令和选项,很依赖里面的 man 查看命令,但因为着实看不懂,有没有什么办法把man查看命令的信息改成中文 在CentOS 7中,你可以通过安装man-pages-zh包来获取中文的man手册。以下是具体的步骤&#xff1a…

Java入门基础学习笔记1——初识java

1、为什么学习java? 几乎统治了服务端的开发;几乎所有的互联网企业都使用;100%国内大中型企业都用;全球100亿的设备运行java。开发岗位薪资高。 Java的流行度很高,商用占有率很高。 可移植性。 2、Java的背景知识 …

(动画详解)LeetCode面试题 02.04.分割链表

💖💖💖欢迎来到我的博客,我是anmory💖💖💖 又和大家见面了 欢迎来到动画详解LeetCode系列 用通俗易懂的动画的动画使leetcode算法题可视化 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读…

Jsp+Servlet实现图片上传和点击放大预览功能(提供Gitee源码)

前言:在最近老项目的开发中,需要做一个图片上传和点击放大的功能,在Vue和SpringBoot框架都有现成封装好的组件和工具类,对于一些上世纪的项目就没这么方便了,所以需要自己用原生的代码去编写,这里分享一下我…

中国当代最具影响力的人物颜廷利:死神(死亡)并不可怕,可怕的是…

中国当代最具影响力的人物颜廷利:死神(死亡)并不可怕,可怕的是… 在中国优秀传统文化之中,汉语‘巳’字与‘四’同音,在阿拉伯数字里面,通常用‘4’来表示; 作为汉语‘九’字&#x…