Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

基础介绍

详细原理介绍请点击

Appium是一个开源的自动化测试框架,用于原生,混合和移动Web应用程序。 它使用WebDriver协议驱动iOS,Android和Windows应用程序。关于它的运作流程,用图来介绍会更加生动形象一些:

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Appium运行流程、原理

在上图中,左边这部分是Appium-Client,通俗点来说,是用于间接驱动最右边的设备执行预定的自动化测试流程,支持使用多种主流的编程语言进行编写,这也是测试开发人员需要关注的核心部分;中间的Appium-Server是衔接左边客户端以及右边APP设备端的重要桥梁,一般仅需要配置好环境及启动运行;右边这块,当然就是实际执行自动化测试的终端,如IOS真机、Android真机,或者是模拟器。

工具:

    1.使用Java开发时才需要下载  JDK

    2. node.js

    3. Android SDK

    4.Appium-Server:下载appium-desktop即可

    5.Appium-Python-Client  (编写测试脚本用)

    6.终端:下载网易mumu安卓模拟器

    7.实例:(1)模拟机安卓应用自动化测试(2)真机自动化化测试

1.安装JDK

(1) 官网下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html


(2) 选择Java SE 8u201/ 8u201,点击JDK下载

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

(3) 安装下载的JDK

(4)配置系统环境变量

在“系统变量”一栏中,进行新建或编辑操作

(1)新建JAVA_HOME变量

变量名:JAVA_HOME

变量值:填写JDK安装目录(我的是 D:\Program Files (x86)\Java\jdk1.8.0_181

(2)找到Path变量进行编辑,没有的话就新建一个

变量名:Path

变量值: ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

(原有变量值不要删除,直接在末尾添加)

//注意前面有个英文的分号,不要漏掉,这是为了跟前面的变量值间隔开的

(3)新建CLASSPATH变量

变量名:CLASSPATH

变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

//可以直接复制这句话到变量值那一栏,注意前面有个“.”不要漏掉

点击确定,保存设置,回到桌面“win+R”,输入“cmd”

输入命令:java -version

详细内容见  https://www.jianshu.com/p/c9cb3185b221

2.安装node.js

1. 由于Appium的server端是node.js编写的所以需要先安装node.js。安装node.js后,也可以直接按照官方教程通过npm安装Appium,不推荐这种方式。(注:npm类似于Python的pip,一个非官方包管理器)

2. 官方下载地址:点击下载 ,根据自己的操作系统下载不同版本的node.js

3. node.js的安装一路傻瓜式next就可以了,注意一点,将路径改下,安装成功后会自动添加环境变量。也就是在cmd下任意目录都可以使用npm命令。

4. 检查是否安装成功

cmd下输入:npm

3.安装Android SDK(安卓软件开发包)

1. 安装Android SDK(安卓软件开发包),测试Android手机必然是要安装Android SDK。(只看1.4.5即可)

下载地址:https://www.androiddevtools.cn/ 在sdk下下载(直接下载对应版本,解压至任意目录即可,注意路径不能包含中文,否则安装 SDK Manager.exe 时不能出来工具包)

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

安装后,解压后包含以下文件:

1)自带add-ons、platforms、tools、AVA Mnager.exe、SDK Manager.exe、SDK Readme.txt

2)新增文件夹build-tools、extras、platform-tools

3)点击SDK Manager.exe进入SDK工具下载,自带tools(自带AndroidSDK Tools)和extras文件夹

4)手动下载:下载Android SDK Platform-tools解压后为platform-tools放到 platform-tools 文件下                                                  下载 Android SDK Build-tools解压后为21.0.0放到build-tools 下(多下载几个版本)                                                    Extras文件夹下的 Google USB Driver

2. 在系统变量中,新建变量名:ANDROID_HOME,变量值写解压后的文件夹路径。(不建议这么做)

变量:ANDROID_HOME

值:D:\android-sdk-windows

3. 双击android-sdk-windows文件夹下的 SDK Manager.exe,选装工具。必装:Tools 文件夹下Android SDK Platform-tools 和 Android SDK Build-tools,Android SDK Tools,Extras文件夹下的 Google USB Driver

选择了以上四个安装包之后,点击“Install 4 Packages...”,在License页面,选择Accept License,最后点击 “Install” 开始安装。

4. 在系统变量 Path 中添加ANDROID_HOME、tools、platform-tools、build-tools目录。保存修改。

变量Path,值:%ANDROID_HOME%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools\28.0.0

建议如下写法:D:\android-sdk-windows;D:\android-sdk-windows\tools;D:\android-sdk-windows\platform-tools;D:\android-sdk-windows\build-tools\28.0.0

5. 检查环境变量是否配置成功

cmd下分别输入:

adb

andoid

android -h

或者

monkeyrunner                            验证tools环境配置是否成功

adb                                              验证配置platform-tools环境变量是否成功

aapt                                              验证build-tools的路径环境变量是否配置成功

4.安装Appium-Server

使用appium-desktop来搭建Appium-Server环境;appium-desktop是连接appium服务的桌面应用,可以方便测试人员进行连接手机,录制脚本等工作。

点击进入下载Appium-desktop进行下载,选择对应的版本进行下载,下载完成后直接进行安装就可以了。

5.Appium-Python-Client

选择python作为自动化测试脚本语言:

注:appium-desktop 和 模拟机 连接时,可以通过录制,进行操作模拟机,然后,把录制脚本转化为正式python脚本,可以复制到pycharm编辑器中,通过appium-python-client这个驱动来自动化模拟机。脚本在pycharm中运行,通过appium-server来操作模拟机。

方法一:直接用命令  pip install Appium-Python-Client 

方法二(内网下):

1.  离线下载Appium-Python-Client

2. cd python-client-master

3.  python setup.py install

由于 运行 python setup.py install 时,提示有错误,找不到urllib3等等,(原因为公司内网,不能下载依赖)!!!!!!

故,

1.  离线  下载urllib3

2. cd urllib3-master

3.  python setup.py install

4.  检测是否成功   

import urllib3

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

此时,再次运行 pip install Appium-Python-Client  仍有报错提示

故,离线 下载 selenium

(1)下载selenium安装包

(2)下载后解压

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

(3)进入命令行,切换到安装包路径,输入python setup.py install指令执行setup.py文件安装selenium

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

看到下图中的Finished processing dependencies for selenium==3.6.0即安装成功

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

当然,你也可以用pip show selenium指令查看selenium安装情况

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

再次在python-master文件中运行 pip install Appium-Python-Client 无报错信息即可

命令运行后,可以发现python27下的site-packages下已加载了

appium_python_client-0.46-py2.7.egg

selenium-3.141.0-py2.7.egg<from Appium-pYthon-Client>

urllib3-1.25.3-py2.7.egg<from selenium<4,>=3.14.1—>Appium-pYthon-Client>

6.安装网易mumu安卓模拟器

mumu模拟器下载地址:http://mumu.163.com/,选择磁盘进行安装,安装完成后找到 adb_server的所在位置,复制文件路径,将其添加到环境变量中,变量名为adb_server,变量值为其文件路径。

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

 

 

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

7.实例

(1)安卓应用自动化测试

(1)使用adb连接

首先,对SDK中platform-tools里adb版本,模拟器adb_server中的版本进行匹配;

 

platform-tools中adb版本

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

 

模拟器中版本

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

如果出现两个版本不一致,将模拟器中的adb_server.exe复制一份,命名为adb.exe;然后粘贴到SDK中bin里,更替掉原本的版本即可。

现在开始,找到Android SDK的文件夹,点开platform-tools,

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

shift + 右键 进入CMD,输入adb devices,会显示目前处于5037端口,并且进程成功启动的说明。(运行前需要后台结束adb.exe进程

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

启动SDK进程

打开mumu模拟器(一定要打开)之后找到mumu的安装路径,点开bin文件夹,shift + 右键  进入CMD,输入adb.exe connect 127.0.0.1:7555 如下图所示就表示SDK与模拟器成功连接了

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

 

 

 

sdk端检查

(2)打开appium-desktop连接模拟器

修改  Host: 127.0.0.1

Post 保持默认

点击开始服务

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

继续点击如图所示

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

在desired capabilities中输入对应参数:

切记:

1)左边框内输入

2)app  filepath      F:\Appium\app-debug.apk

3)  autoAcceptAlerts      boolean          true

4)  我加载automationName时,会报错“could not find a driver for automationName'appium' and platformName 'Android'.”

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

之后保存,并点击start session即可(保持模拟器打开状态)

注:点击 获得appPackage和appActivity

方法二:把apk放到android-sdk下build-tools,使用命令  aapt dump badging F:\Appium\app-debug.apk

之后点击start session即可(保持模拟器打开状态)

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

连接成功后,appium上自动调整到App页面,如下

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

(2)真机自动化测试

下面演示在安卓真机上的自动登录Keep(APP)。

获取设备名称。操作流程:开启手机的开发和调试模式,连接电脑授权认证,Window + R输入并运行cmd,用adb devices -l查看:

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

获取设备号

启动Appium Server进行调试:

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Inspector Session

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Desired Capabilities

从上图可以看到,启动App Session需要有以下几个参数(点击了解更详细的Appium Desired Capabilities):

platformName,如Android、iOS等

deviceName,参考前面是如何获取的

注:点击这里获得appPackage和appActivity

综上所述,这里对应Keep的信息如下:

{"platformName":"Android","deviceName":"WAS_AL00","appPackage":"com.gotokeep.keep","appActivity":"com.gotokeep.keep.splash.SplashActivity"}

点击Start Session,之后可以看到手机端启动了Keep,并且在Appium Server端中同步展示:

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Start Session

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

Keep

上述的操作通常只是用来方便获取控件id及定位的,下面基于Python编写完整的Appium-Client以实现自动登录操作:

from appium import webdriver 

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

server = 'http://localhost:4723/wd/hub'      # Appium Server, 端口默认为4723desired_capabilities = {

    'platformName': 'Android',

    'deviceName': 'WAS_AL00',          # 需替换成你的deviceName

    'appPackage': 'com.gotokeep.keep',

    'appActivity': 'com.gotokeep.keep.splash.SplashActivity'

}

driver = webdriver.Remote(server, desired_capabilities)

wait = WebDriverWait(driver, 10)            # 最大查找等待超时时间:10s

def get_permission():

    """允许APP获取的某些权限"""

    try:

        ask = wait.until(EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/do_not_ask_checkbox')))

        ask.click()

        allow = wait.until(            EC.presence_of_element_located((By.ID, 'com.android.packageinstaller:id/permission_allow_button')))

        allow.click()

    except:

        pass

# 允许两项授权

get_permission()

get_permission()

# 点击“立即使用”

welcome = wait.until(EC.presence_of_element_located((By.ID, 'com.gotokeep.keep:id/btn_bottom_in_video_welcome')))

welcome.click()

# 切换“密码登录”(同样可以使用第三方进行授权登录)

driver.tap([(900, 110)])

# 输入“手机号”

phone = driver.find_element_by_accessibility_id('Phone Number In Login')phone.send_keys('13988888888')  # 替换成实际的账号

# 输入“密码”

password = driver.find_element_by_accessibility_id('Password In Login')password.send_keys('123456')    # 替换成实际的密码

# 点击“登录”

login = driver.find_element_by_id('com.gotokeep.keep:id/btn_action')

login.click()

最后,附上运行效果图:

Appium app自动化测试环境搭建:windows7 + Appium + 网易mumu安卓模拟器 + Python

效果