• 手机APP自动化环境搭建


    摘要

    近年来,随着移动应用从数量上和逻辑复杂程度上的增长,以及产品发布周期的紧缩,使得回归测试迫在眉睫,鉴于此APP自动化测试变得越来流行,当前主流的APP自动化工具有:AppiumRobotiumEspressoCalabash等。Appium是一个开源的自动化测试框架,用于原生、混合和移动Web应用程序,支持AndroidOS自动化测试以及Selenium WebDriver支持的所有语言。所以,我们结合前期项目组的自动化测试经验,在此探讨基于RF+AppiumAPP自动化测试环境搭建,并初步实现了打开应用操作。

    环境准备

    2.1 安装JDK

    根据自己电脑下载,推荐下载1.8版本,其它版本不稳定会出问题,例如1.9版本的jdk不兼容uiautomatorviewer,无法定位元素。官网地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    ②环境变量配置:

    1.添加变量名:JAVA_HOME,变量值:JDK的安装路径(例如:C:/Program FilesJavajdk1.8.0_241)。

    2.修改变量名:PATH,变量值:在变量值最后输入%JAVA_HOME%in;%JAVA_HOME%jrein; (注意原来Path的变量值末尾有没有‘;’号,如果没有,先输入;’号再输入上面的代码)。

    3.添加变量名:CLASSPATH,变量值: .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar注意前面带有小点)。

    4.检查配置:

    cmd命令行输入:java -version,显示版本信息,则说明安装和配置成功,如图2-1所示。

     

    图2-1

    2.2 安装Android SDK

    Android SDK 依赖于Java环境,所以确保Java环境OK。其对应安装目录tools下包含各种Android自带的模拟器,还有android命令等。

    ①下载地址http://dl.google.com/android/android-sdk_r23.0.2-windows.zip

    注意:SDK解压后的文件中不包含platform-toolsbuild-tools文件,故需要下载,下载地址:http://www.androiddevtools.cn/,找到对应版本,如图2-2

     

     

    2-2

    下载的文件放到android-sdk目录下,如图2-3

     2-3

    ②环境变量配置

    1.添加变量名:ANDROID_HOME,变量值:SDK的安装路径(如“D:appandroid_sdk”)

    2.修改变量名:PATH,变量值:在变量值最后输入%ANDROID_HOME%platform-tools;%ANDROID_HOME% ools;

    2.3 安装安卓模拟器

    ①安装安卓模拟器,这里用的是夜神模拟器,直接官网下载:https://www.yeshen.com/

    ②导入APP的APK包,第一种直接将APK包拖入夜神模拟器中,第二种点击“安装APK按钮,通过选择文件夹的方式导入。

    2.4 安装APPIUM

    ①安装:https://bitbucket.org/appium/appium.app/downloads/,这里选用合适的版本即可。

    ②环境变量配置

    1.添加变量名:APPIUM_HOME,变量值:APPIUM的安装路径(如:D:appAPPIUM

    2.修改变量名:PATH,变量值:在变量值最后输入%APPIUM_HOME% ode_modules.bin

    3.检查配置

    cmd命令行输入:appium,显示appium的版本信息,如图2-4所示。

     图2-4

    2.5 安装APPIUM-Python-Clientrobotframework-appiumlibrary

    Python环境已配置,前期安装已完成。

    cmd命令行中输入:pip install APPIUM-Python-Clientpip install robotframework-appiumlibrary

    cmd命令行输入:appium-doctor检查依赖和环境变量,全部为“√”,说明appium环境准备好了,如图2-5所示。

     

    2-5

    2.6 连接夜神模拟器

    1.打开夜神模拟器,并运行Appium;

    2. cmd命令行输入:adb connect 127:0.0.1:62001(62001是夜神模拟器端口号)

    3. cmd命令行输入:adb devices

    检查是否连接到安卓设备或模拟器,显示如图2-6,即表明连接成功。

     

    图2-6

    调试脚本

    3.1 Open Application打开应用

    上述,我们已经实现了基于RF+Appium的APP自动化环境搭建,本章旨在其基础上,实现简单的自动化测试——打开APP。

    打开RF工具,新建项目,导入AppiumLibrary库,用Open Application关键字实现打开APP应用操作,如图2-7。

     图2-7

    运行用例成功后,可以看到夜神模拟器中APP应用被打开,如图2-8所示。

     

    图2-8

    3.2 Open Application关键字详解

    AppiumLibrary中有很多关键字,有兴趣的可自己去学习。这里主要详细介绍Open Application关键字,其他关键字这里不再赘述,其后的必要参数设置如表1所示(红色字体代表本项目使用的参数)。

    表1

    关键字

    描述

    实例

    remote_ur

    Appium Server URL

    本地一般为http://hocalhost:4723/wd/hub

    platformName

    要测试的手机操作系统

    IOS,Android或者FirefoxOS

    platformVersion

    手机操作系统版本

    例如:7.1,4.4,23(夜神模拟器中的手机操作系统版本)

    deviceName

    使用的手机类型或者模拟器类型

    在IOS系统中此参数必填,但Android系统中无意义。

    安卓通过adb devices命令获取(127.0.0.1:62001),ios通过instruments -s deviecs命令获取。

    appPackage

    安卓包名称

    获取方式见3.3章

    appActivity

    应用启动页

    app

    测试APP的路径(可省)

    APK文件的路径

     

    3.3 appPackageappActivity参数获取

    1.使用命令命令获取

    通过反编译来获取包名和入口:aapt dump badging <apk文件的存放路径>,如图3-1和3-2所示。

    图3-1

    图3-2

    2.解压APK文件获取

    ①直接将手机App的安装包“Code-debug.apk”解压缩,得到生成的文件“AndroidManifest.xml”;

     ②通过notepad++ 打开AndroidManifest.xml 文件;

     ③在里面搜索:manifest对应的就是appPackage——“energy.zte.helloworld”activity对应的就是appActivity (activity关键字很多,注意辨别)——“energy.zte.ui.WelcomeActivity”,如图3-3和3-4所示。

    图3-3

    图3-4

    3.Appium导入APK包获取

    将APK包导入到Appium中,可直接获得appPackage和appActivity参数,如图3-5所示。

     

    图3-5

    3.4 安装和运行中遇到问题的解决方案

    1.运行打开APP应用,出现Failed to start an Appium session, err was: Error: Could not find zipalign in tools, platform-tools, or supported build-tools under "D:appandroid_sdk"; do you have android SDK or build-tools installed into this location?

    解决方法:将D:appandroid_sdkuild-toolsandroid-4.4W目录下的zipalign.exe拷贝到D:appandroid_sdk ools目录下。

    2.在cmd窗口执行adb命令时,提示:不是内部或外部命令方法

    解决方法:这种问题一般都是环境变量的问题,查看变量PATH中,adb.exe所在目录的路径添加是否正确。

  • 相关阅读:
    Lining.js
    stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值
    任正非:美国通信产业失败,不要归罪于华为的崛起(创业过程:前端替客户考虑,后端及时回款建立信誉)
    草根站长赚不到钱的六大原因(失败的理由却只有一个,那就是你不够努力)
    记一次构建SaaS平台项目失败后的反思(收集的客户需求太少,且没有区分重点,闭门造车。技术演变要渐进)
    Qt源码分析之QObject
    Mongodb索引用B树,而Mysql用B+树
    开源工作流elsa-core
    ExpressionTree实现JSON解析器
    分析Ajax爬取
  • 原文地址:https://www.cnblogs.com/yuhuang/p/12747968.html
Copyright © 2020-2023  润新知