Appium app自动化测试环境搭建完整版(内网)


windows7 + Appium + 夜游安卓模拟器 + Python

像Selenium可以操控Web浏览器,手机APP平台也有类似的自动化测试工具:Appium;

全文分基础介绍、环境搭建和案例演示三部分介绍Appium,以帮助Learner快速的上手。

基础介绍

详细原理介绍请点击

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

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.终端:下载夜神安卓模拟器

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

1.安装JDK

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


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

(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 时不能出来工具包)

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

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

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

故,离线 下载 selenium

(1)下载selenium安装包

(2)下载后解压

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

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

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

再次在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.安装夜神安卓模拟器

点击下载夜神模拟器,选择磁盘进行安装,安装完成后找到 nox_adb的所在位置,复制文件路径,将其添加到环境变量中,变量名为nox_adb,变量值为其文件路径。

7.实例

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

(1)使用adb连接

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

platform-tools中adb版本
模拟器中版本

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

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

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

启动SDK进程

打开夜神模拟器(一定要打开)之后找到夜神的安装路径,点开bin文件夹,shift + 右键  进入CMD,输入nox_adb.exe connect 127.0.0.1:62001

之后在输入  adb devices

打开夜神模拟器(一定要打开)之后找到夜神的安装路径,点开bin文件夹,shift + 右键  进入CMD,输入nox_adb.exe devices

之后在输入 adb devices

之后一直打开模拟器,打开platform-tools,并进入cmd,输入adb devices,如下图所示就表示SDK与模拟器成功连接了

sdk端检查

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

修改  Host: 127.0.0.1

Post 保持默认

点击开始服务

继续点击如图所示

在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'.”

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

注:点击 获得appPackage和appActivity

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

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

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

(2)真机自动化测试

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

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

获取设备号

启动Appium Server进行调试:

Inspector Session
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端中同步展示:

Start Session
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()

最后,附上运行效果图:

效果


参考资料如下:

https://www.cnblogs.com/Caiyilong/p/8559394.html

https://www.cnblogs.com/my-blogs-for-everone/p/7751596.html

https://jingyan.baidu.com/article/7f766daffb88334101e1d084.html

https://blog.csdn.net/Sily_Z/article/details/80661408

https://blog.csdn.net/qq_22770715/article/details/78540634

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容