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

2020年4月补充

鉴于配置自动化测试这套框架确实稍微有点麻烦,许多小伙伴在配置的过程中总是踩坑,最近写了篇简化版的入门教程,不想折腾Android SDK的小伙伴可以移步到那篇文章:https://www.jb51.net/article/169763.htm


概述

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

  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文件

import time
import unittest

from appium import webdriver

class MyTests(unittest.TestCase):
 # 测试开始前执行的方法
 def setUp(self):
  desired_caps = {'platformName': 'Android', # 平台名称
      'platformVersion': '4.4.2', # 系统版本号
      'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
      'appPackage': 'com.youdao.calculator', # apk的包名
      'appActivity': 'com.youdao.calculator.activities.MainActivity' # activity 名称
      }
  self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium
  self.driver.implicitly_wait(8)

 def test_calculator(self, t=500, n=4):
  """计算器测试"""
  time.sleep(3)
  window = self.driver.get_window_size()
  x0 = window['width'] * 0.8 # 起始x坐标
  x1 = window['width'] * 0.2 # 终止x坐标
  y = window['height'] * 0.5 # y坐标
  for i in range(n):
   self.driver.swipe(x0, y, x1, y, t)
   time.sleep(1)
  self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()
  for i in range(6):
   self.driver.find_element_by_accessibility_id('Mathbot Editor').click()
   time.sleep(1)

  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'
  self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
  self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
  self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
  time.sleep(3)

 # 测试结束后执行的方法
 def tearDown(self):
  self.driver.quit()

2.创建run.py文件

import os
import time
import unittest

from HTMLTestRunner import HTMLTestRunner

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

if __name__ == "__main__":
 report_dir = './test_report'
 os.makedirs(report_dir, exist_ok=True)
 now = time.strftime("%Y-%m-%d %H-%M-%S")
 report_name = '{0}/{1}.html'.format(report_dir, now)

 with open(report_name, 'wb')as f:
  runner = HTMLTestRunner(stream=f, title="测试报告", description="本测试报告内容包含超级计算器的简单测试")
  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自动化测试并生成测试报告的文章就介绍到这了,更多相关Python3 + Appium + 安卓模拟器实现APP自动化测试内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python3+Appium实现多台移动设备操作的方法

    需求: 连接本机的(两台安卓手机)或者本机安装的(安卓模拟器两个),实现同时安装本地apk包 . demon.py 特别说明:必须写udid才能实现同时对两台以上的移动设备操作.对deviceName中的值进行修改后是无法区分移动设备的,如果只修改deviceName的value就只能在同一台设备上进行安装了. 下面代码只是基础介绍,扩展到框架中需要根据自己需求做: import os import threading import multiprocessing from appium imp

  • Python+appium框架原生代码实现App自动化测试详解

    step1:首先介绍下python+appium的框架结构,如下截图所示 (1):apk目录主要放置待测app的apk资源: (2):config目录主要放置配置文件信息,包含:数据库连接配置.UI自动化脚本中所需的页面元素信息及app启动信息.自动化报告邮件发送配置信息.接口请求的对应的url信息等[大家可根据待测app的功能添加或减少配置文件信息]. (3):report目录主要放置测试完成后生成的测试报告信息: (4):src目录下包含的目录如下 common目录:app启动方法的封装文件

  • Python3+Appium安装使用教程

    一.安装 我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation) appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobile App Automation Made Awesome). appium可以通过Desktop App和npm两种方式安装.Desktop App类似于selenium IDE提供一个图形界面式操作工具:npm类似于selenium就只能使用命令行. 如果对appium还不太熟悉,推荐使用De

  • 关于Python3爬虫利器Appium的安装步骤

    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android.iOS等设备完成自动化测试,比如模拟点击.滑动.输入等操作,其官方网站为:http://appium.io/.本节中,我们就来了解一下Appium的安装方式. 1. 相关链接 GitHub:https://github.com/appium/appium 官方网站:http://appium.io 官方文档:http://appium.io/introduction.html 下载链接:http

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

    2020年4月补充 鉴于配置自动化测试这套框架确实稍微有点麻烦,许多小伙伴在配置的过程中总是踩坑,最近写了篇简化版的入门教程,不想折腾Android SDK的小伙伴可以移步到那篇文章:https://www.jb51.net/article/169763.htm 概述 本文主要分为以下几个部分 安装Python3 安装Python3的Appium库 安装Android SDK 安装JDK 安装Appium 安装模拟器 编写测试脚本并生成测试报告 项目示例下载地址: https://github.

  • Python与Appium实现手机APP自动化测试的示例代码

    目录 1.什么是Appium 2.启动一个app自动化程序的步骤 3.appium服务介绍 4. appium客户端使用 5.adb的使用 6.Appium启动过程分析 1.什么是Appium appium是一个开源的测试自动化框架,可以与原生的.混合的和移动的web应用程序一直使用.它使用WebDriver协议驱动IOS(内置的测试引擎xcuitest).Android(uiautomator2,Espresso)和Windows应用程序 原生应用程序:安卓程序是用JAVA或kotlin开发出

  • Python3+Appium安装及Appium模拟微信登录方法详解

    一.Appium安装 我们知道selenium是桌面浏览器自动化操作工具(Web Browser Automation) appium是继承selenium自动化思想旨在使手机app操作也能自动化的工具(Mobile App Automation Made Awesome). appium可以通过Desktop App和npm两种方式安装.Desktop App类似于selenium IDE提供一个图形界面式操作工具:npm类似于selenium就只能使用命令行. 如果对appium还不太熟悉,

  • python和Appium移动端多设备自动化测试框架实现

    目录 前言: 一.流程图 二.appium服务 三.连接测试设备 四.元素封装 五.运行 前言: 本篇文章主要介绍基于pytest和Appium框架,支持Android和iOS功能自动化的测试框架.同时该框架支持多设备测试,并利用allure库,生成可视化测试报告.本框架主要涉及的内容包括:python3.pytest.appium.allure等,此处已假设你具备相应的基础知识,同时已有可以随时运行的测试环境(iOS设备的测试只能在Mac系统中执行,没有Mac的朋友们,可以看看不执行) 一.流

  • 用iOS模拟器安装App的方法

    背景介绍: Mac机器A上面有工程P的源码,Mac机器B上没有源码,想在B的模拟器上运行应用P. 步骤: 1,在机器A上,build模拟器版本,得到模拟器下的app文件: /Users/work/Library/Developer/Xcode/DerivedData/*-daajgszwtouixcfnoaiawbxybpvd/Build/Products/DebugTest-iphonesimulator/*.app 注意: (1),需要将work修改为自己的用户名. (2),两个*是prod

  • 使用Win10+Android+夜神安卓模拟器,搭建ReactNative开发环境

    前言 网上的教程皮的简直不谈了,非要搞个AndroidStdio,你以为呢?反手就是一重锤,我就是不装,第一开发的很多工作都不需要这个IDE,第二运行起来还很吃内存,经过实践有如下的教程,请大家指教. 安装 git 不说了,我相信你早就安装了,有需要的参考:https://www.jb51.net/article/148066.htm Java8 需要配置环境变量JAVA_HOME,CLASS_PATH和path路径,配置方式如下 安装Android SDK 参考我的另一篇文章 配置androi

  • python爬虫之Appium爬取手机App数据及模拟用户手势

    目录 Appium 模拟操作 屏幕滑动 屏幕点击 屏幕拖动 屏幕拖拽 文本输入 动作链 实战:爬取微博首页信息 Appium 在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素内容的方式.但认真看过前文的读者,肯定在博主获取元素的时候观察到了一个现象. 那就是手机App的内容并不是一次性加载出来的,比如大多数Android手机列表ListView,都是异步加载,也就是你滑动到那个位置,它才会显示出它的内容. 也就是说,我们前面爬取微博首页全部信息的时候,如果你不滑动先加载

随机推荐