• 移动端测试环境搭建(Android+Appium)


    一、Android环境搭建

    1.1 Java环境

    Mac 下安装为例:

    1、在官网下载好jdk,双击进行安装即可

    2、安装完成后配置环境变量,在终端输入 vi ~/.bash_profile 打开配置文件进行编辑,在配置文件输入Java配置信息:

    # set jdk1.8
    JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    PATH=$PATH:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH
    export PATH
    
    

    3、保存并退出配置文件,重启电脑,在终端输入 java -version,正确输出版本信息即配置成功。

    1.2 AndroidSDK环境

    1、下载相应版本的SDK,推荐网站 https://www.androiddevtools.cn/


    2、解压SDK包,记住这个目录位置,如 /Users/yl/soft/android-sdk-macosx(目录不要有中文)

    3、下载并安装Platform-Tools https://www.androiddevtools.cn/



    或者打开终端,cd到Android SDK的tools目录下,执行./Android sdk命令, 打开管理界面来安装Platform-Tools

    4、配置环境变量
    vi ~/.bash_profile

    在配置文件中输入如下内容,并保存退出:

    # set android
    ANDROID_HOME=/Users/yl/soft/android-sdk-macosx
    PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    export ANDROID_HOME
    export PATH
    

    1.3 Android模拟器安装

    1、下载VirtualBox虚拟机,https://www.virtualbox.org/wiki/Downloads,下载后双击安装即可

    2、下载模拟器 genymotion,https://www.genymotion.com/download/,下载后双击安装即可

    3、虚拟机镜像导入
    Samsung Galaxy S6 - 5.1.0 - API 22 - 1440x2560.ova 镜像为例,打开VirtualBox,点击“管理-导入虚拟电脑”,选择ova镜像

    4、启动模拟器
    打开genymotion,在弹框选择 personal use:

    二、为虚拟机提供安装apk功能

    安装genymotion ARM插件,此插件可提供x86运行环境,下载对应版本的插件进行安装即可:https://blog.csdn.net/GHY2016/article/details/83422620/
    如下载Android 5.1版本插件 ARM_Translation_Lollipop_20160402.zip

    三、adb调试工具

    3.1 adb工作原理

    3.1.1 adb的概念

    adb 全名 Android Debug Bridge,是一个Android系统调试工具。
    可用于Android 应用开发和测试。

    安装应用

    打开终端,执行 adb install apk安装包的完整路径
    adb install /Users/wanger/weChat.apk

    3.1.2 adb的构成和工作原理

    adb 包含3个部分:

    1、client端:运行在开发机器中,即本地电脑,用来发送adb命令;
    2、daemon守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令;
    3、server端:运行在开发机器中,用来管理client端和daemon之间的通信。

    client端将adb命令发送给server端,server端将命令发送给daemon,daemon执行完命令后,将结果返回给server,server将结果给client。

    3.2 adb常用命令

    3.2.1 获取包名和界面名

    包名(package):决定程序的唯一性,如果包名一样,在安装时就会进行替换,如软件更新就是包名一致
    界面名(activity):也叫启动名,一个界面名对应一个界面,如短信界面,它有一个它自己的界面名

    应用场景

    测试哪个应用程序的哪个界面

    使用步骤

    1、打开需要测试的应用程序
    2、输入adb命令

    命令格式

    • Mac/Linux:
      adb shell dumpsys window windows | grep mFocusedApp

    • Windows:
      adb shell dumpsys window windows | findstr mFocusedApp

    3.2.2 文件传输

    发送文件到手机,如给手机导入500条联系人数据

    命令:
    adb push 电脑文件路径 手机文件夹路径

    例:发送一张图片到手机的sd卡

    执行命令:
    adb push /Users/yl/Pictures/0001.JPG /sdcard

    打开手机的文件管理器,查看图片:

    从手机拉取文件

    命令:
    adb pull 手机的文件路径 电脑的文件夹路径

    例:将手机的图库中的照片下载到电脑

    执行命令:
    adb pull /sdcard/DCIM/Camera/IMG_20210306_203418.jpg /Users/yl/Pictures

    3.2.3 获取app启动时间

    应用场景

    测试某个应用程序的启动时间。

    命令

    adb shell am start -W 包名/启动名

    例:启动 com.android.contacts/.activities.PeopleActivity 并进入界面

    执行命令:
    adb shell am start -W com.android.contacts/.activities.PeopleActivity

    ThisTime: 该界面启动耗时,即activity(毫秒)
    TotalTime: 应用自身启动时间 = ThisTime + 应用程序代码运行时间(application)(毫秒)
    WaitTime: 系统启动应用耗时 = TotalTime + 系统资源启动时间(毫秒)

    3.2.4 获取手机日志

    应用场景

    获取日志,有助于bug定位等。

    使用步骤

    1、打开需要测试的应用程序
    2、找到触发bug的位置
    3、使用查看日志命令
    4、触发bug
    5、获取日志信息

    查看日志命令

    adb logcat

    运行命令后,会对操作进行监听并输出相应的日志信息:

    3.2.5 其他

    四、Appium环境搭建

    Appium是一个移动端的自动化框架,可用于测试原生应用(Android或iOS的SDK编写的应用)、移动网页应用(如safari、chrome等)和混合型应用。

    4.1 Appium客户端安装

    1、官网下载相应版本的软件进行安装,http://appium.io/
    2、安装好后,双击打开,进行配置

    3、启动成功:

    4.2 Appium-python库安装

    直接执行如下命令即可:
    pip install appium-python-client

    五、使用Appium启动应用程序

    在测试某个应用程序之前,需要先打开它。

    5.1 例:打开手机的通讯录

    1、打开手机模拟器
    2、打开appium工具
    3、创建一个python项目,名为test_appium
    4、创建一个python文件,名为demo.py
    5、编写代码:

    import time
    from appium import webdriver
    
    desired_caps = dict()
    desired_caps["platformName"] = "Android"
    desired_caps["platformVersion"] = "5.1"
    desired_caps["deviceName"] = "192.168.56.101:5555"
    desired_caps["appPackage"] = "com.android.contacts"
    desired_caps["appActivity"] = ".activities.PeopleActivity"
    
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    time.sleep(5)
    driver.quit()
    

    运行demo.py文件,打开模拟器查看。

    如果运行demo.py报错:

    selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find adb Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
    
    

    需要配置appium客户端的环境变量,重启客户端:

    5.2 参数详解

    import time
    from appium import webdriver
    
    desired_caps = dict()
    # 平台名称,如iOS、Android,大小写皆可
    desired_caps["platformName"] = "Android"
    # 平台版本,如Android 5.1、8.2
    desired_caps["platformVersion"] = "5.1"
    # 设备名称,在Android中可以随便命名,但不能为空,建议通过 "adb devices" 命令获取
    desired_caps["deviceName"] = "192.168.56.101:5555"
    # 要打开的应用程序,通过"adb shell dumpsys window windows | grep mFocusedApp" 命令获取
    desired_caps["appPackage"] = "com.android.contacts"
    # 要打开的界面,通过"adb shell dumpsys window windows | grep mFocusedApp" 命令获取
    desired_caps["appActivity"] = ".activities.PeopleActivity"
    
    # 连接appium服务器
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
    time.sleep(5)
    
    # 退出
    driver.quit()
    

    appium启动,实际是在本地开启一个端口为4723的服务,
    python代码就访问appium服务,并获取driver对象,
    appium将driver对象调用的方法转换为post请求,提交给appium服务,
    appium服务将接收到的post请求发送给手机,手机再执行相应的操作。

  • 相关阅读:
    关于阿里云带宽监控指标记录
    mongodb备份还原
    squid3.5缓存代理实践记录
    kafka依赖zookeeper原因解析及应用场景
    Zookeeper+Kafka集群部署(转)
    dubbo框架提供Main方法运行容器的几种方式(转)
    html标签简介(常用)
    数据库中和表并列的其他对象
    外键约束
    数据库中的约束
  • 原文地址:https://www.cnblogs.com/yanlin-10/p/14490264.html
Copyright © 2020-2023  润新知