专栏名称: InsaneLoafer
软件测试小白一枚。
目录
相关文章推荐
BioArt  ·  Mol Cell | RNA Pol ... ·  3 天前  
BioArt  ·  Nature | ... ·  3 天前  
生物探索  ·  Nat Commun | ... ·  4 天前  
今天看啥  ›  专栏  ›  InsaneLoafer

一、Appium架构介绍与环境安装

InsaneLoafer  · 简书  ·  · 2021-04-15 12:44

文章预览

目录

  • 目前mobile自动化解决方案
  • appium介绍
  • appium框架介绍
  • appium环境安装
  • IOS配置

目前mobile自动化解决方案

image.png
  • 自动化工具选择
    • 单平台测试or 多平台测试?
    • 是否有多设备同时测试的场景?
    • 不局限于测试环境,任何版本任何环境都可以测试?
    • 最擅长哪种开发语言?
    • 当前市面是否有满足项目需求的测试工具?
    • 是否需要二次开发?
image.png

Appium介绍

Appium是一个 移动端的自动化测试框架 ,可用于测试 原生应用,移动网页应用和混合应用 ,且是跨平台的。可用于iOS和Android操作系统。原生应用是指用android或iOS编写的应用﹐移动网页应用是指网页应用,类似于iOS中safarii应用或者Chrome应用或者类似浏览器的应用。混合应用是指一种包裹webviiew的应用,原生应用网页内容交互性的应用。

重要的是Appium是跨平台的。何为跨平台,意思是可以针对不同平台用一套api来编写脚本。

  • 推荐Appium
    • 跨语言:Java、Python、nodejs等
    • 跨平台
      • Andoid、iOS
      • Windows、Mac
    • 底层多引擎可切换
    • 生态丰富,社区强大

Appium引擎列表

  • Android

    • espresso、selendroid、uiautomator、uiautomator2[推荐]
  • iOS

    • uiautomation、xcuitest[推荐]
  • mac

  • windows

  • IOS

    • The XCUITest Driver
    • (DEPRECATED)The UIAutomation Driver
  • Android

    • (BETA) The Espresso Driver
    • The UiAutomator2 Driver
    • (DEPRECATED) The UiAutomator Driver
    • (DEPRECATED) The Selendroid Driver
  • The Windows Driver (for Windows Desktop apps)

  • The Mac Driver (for Mac Desktop apps)

Appium设计理念

  • webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息
  • Client /Server设计模式
    • 客户端通过WebDriver json wire协议与服务端通讯
    • 多语言支持
  • Server可以放在任何地方
  • 服务端NODEJS开发的HTTP服务
  • appium 使用appium-xcuitest-driver来测试iPhone设备,其中需要安装facebook出的WDA(webdriveragent)来驱动iOS测试
image.png

Appium环境安装

  • appium生态工具
    • adb: android的控制工具,用于获取android的各种数据和控制
    • Appium Desktop:内嵌了appium server和inspector的综合工具
    • Appium Server: appium的核心工具,命令行工具
    • Appium client:各种语言的客户端封装库,用于连接appium server
      • python、java、ruby、robotframework-appium
    • AppCrawler自动遍历工具

环境安装

  • Java 1.8版本
  • Android sdk
  • Node js(>=10版本),npm(>=6版本)
  • python3
  • appium-desktop
  • Appium python client

环境所需文件已存百度网盘:

  • 环境安装需要的软件下载地址:

链接: https://pan.baidu.com/s/1Tt69EFSnuM1aCOKWe0GO8Q
密码: jlbg

  • 需要安装的apk:

链接: https://pan.baidu.com/s/1Zr-3Z1plg6fysvFpmxnk4A
密码: gdcw

上面的软件官网都可以下载到。

windows 版本 Appium 环境搭建

安装 nodejs

  • 下载.msi文件

https://nodejs.org/en/download/

image
  • 注意:

1、下载12.*版本双击安装即可。
2、无须配置环境变量,直接重启一个 cmd 输入下面的命令,能够查看这两个版本号即安装成功。

image

安装 appium desktop

直接官网下载 Appium 客户端版本安装即可。
建议下载 版本 1.15.1,最新的版本目前不太稳定。

mac 下载:
Appium-mac-1.15.1.dmg

windows 下载:
Appium-windows-1.15.1.exe

  • 官方下载地址:

https://github.com/appium/appium-desktop/tags

安装命令行版本的 Appium

国内网络一般直接使用官方推荐的命令 npm install -g appium , 会下载失败,超时等问题。这里推荐大家设置国内镜像再下载。

1、设置镜像源

npm config set registry https://registry.npm.taobao.org

2、安装appium

npm install -g appium 这样下载下来的是最新版本的appium。
推荐下载 appium 1.15版本,使用命令指定版本号 npm install -g appium@1.15

appium 这个版本是命令行版本, 与appium desktop启动一个即可,安装也可以只安装一个或者两个都装,建议都装。

  • 安装 appium-doctor
    npm install appium-doctor -g

appium-doctor 是用来检测环境配的是否完整,安装完成之后,重新打开新的命令行窗口,输入 appium-doctor ,如下图:

image

例如上图,还差 ANDROID_HOME没有配会有标为红叉提示。

JDK 环境配置

注意: 使用 windows 的童鞋,如果用的是window10需要使用jdk_1XX的版本, 最上面网盘里面提供的,打开应该会闪退。

若下载比较慢,可以采取其他的方式进行下载。
1、下载好之后进行安装,其中win版本的安装的时候需要注意jre的安装是在jdk安装之后,在进行jre安装的时候不要使用jdk同样的目录,否则会出现javac等的覆盖

2、安装好之后,检查并进行 java 环境的设置

  • a、设置好JAVA_HOME和CLASSPATH
    JAVA_HOME:jdk的安装目录
    CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)


    image
  • b、设置Path,在其中加入两个配置信息

image

安装 android sdk

这里有两种安装方式,一种是命令行下载,一种是通过 Android Studio 下载SDK
如果安装的SDK有问题,可以尝试用另一种方式安装。

第一种方式:命令行安装

  • 下载android sdk

https://www.androiddevtools.cn/

下载:android-sdk_r24.4.1-windows

下载下来之后找到 readme 文件并打开,下图

image

找到这个文件中最下方的一条命令,如下图,在命令行里执行这个命令更新sdk:

image
image

更新完的sdk 会多了一些文件夹,如下图:


image

更新完成之后,检查一下 build-tools/ 路径下,如果是 30 的版本,需要先删掉这个30的文件夹,然后手动的下载一个低于 28版本的build-tools/ 的放在目录下即可(推荐 28或者29的版本),如果下载多个版本会优先使用高版本的。(注意一定要删掉30这个版本的,版本太高appium运行不起来,需要依赖java1.9的版本)

  • 下载 build-tools 方法
    命令行,cd 到sdk 目录下,输入android 回车, 弹出如下界面,勾选想要下载的版本即可。
image

最后,检查对应的目录信息应该包含了以下几个:

  • build-tools

  • platform-tools

  • tools
    如果出现了工具的缺失,可以去上面的sdk manager 里下载。其中,build-tools包含不同版本的安卓版本的工具,每个版本一个文件夹,配置的时候将版本号文件夹配置上类似于:build-tools/xxx;platform-tools存放着adb等工具的,tools存放着uiautomatorviewer等工具。这里要注意build-tools/下的版本不要使用>=30版本的 build-tools/

  • sdk 配置环境变量:
    注意:环境变量不要有空格,中文 或者特殊字符等。
    首先配置好 android_home:


    image

    再到Path中添加下列信息,其中安卓版本build-tools目录下的数字配置为自己电脑上存在的版本。


    image

第二种方式:先下载Android Studio, 利用 Android Studio 下载安装 SDK

参考贴子: https://ceshiren.com/t/topic/4001

注意: sdk 无论使用哪种安装方式,最后都要配置环境变量ANDROID_HOME, 和 Path 。

.net framework 安装

windows 安装 appium desktop 需要依赖 .net framework 必须保证 版本是大于 4.0 的即可。现在目前windows大部分默认的 .net framework 版本都是大于 4.0 的,可以通过下面的方式查看一下,如果不是则需要手动安装。

控制面板–程序–程序和功能 勾选 .net framework 4 确定即可

image

mac OS / Linux 忽略这一步。

安装 appium client

appium client 是我们编写脚本必调的api包,写脚本一定要安装这个包才能引用appium, from appium import webdriver 这行代码。

由于是python的第三方库,直接使用Pip 安装即可:

pip install appium-python-client

安装模拟器

目前市面上模拟器类型比较多, mumu, 夜神,雷电,逍遥,genimotion,android sdk中也有自带的emulator模拟器。学习过程中推荐大家使用mumu模拟器,也可以使用 genimotion模拟器和 android sdk 自带的 emulator。

  • 安装mumu模拟器,练习足够用,但做移动端的 web 测试需要使用genimotion 或者 sdk自带的emulator
  • android sdk 里面自带的模拟器也可以,只不过要下载android的开发工具来管理这些模拟器 - android studio,不用也可以不装,
  • genimotion (自行百度)

模拟器安装好之后,命令行里直接 输入命令 adb devices 即可查看模拟器的状态。

对于第三方模拟器(mumu, 夜神等),windows需要手动连接。
mumu模拟器,需要手动输入下面的连接命令:

adb connect 127.0.0.1:7555

上面的 127.0.0.1:7555 作为一个整体,是 模拟器的名称,也叫序列号(serial number)。是根据本地的 IP 和端口号生成的, 不同的模拟器对应的端口不一样,具体用的哪个端口可以去百度搜索一下或者官网查看 。

mac上直接执行 adb devices 。如果没有识别,需要重启 adb server,执行下面两条命令即可。

adb kill-server
adb devices

不同厂商的模拟器需要连接的名是不一样的,需要查看官网说明。上面仅提供了mumu的连接方式,其它的模拟器自行百度。

mac 上 Appium 环境搭建

安装 nodejs 与 npm

  • 安装方式与 windows 类似 ,官网下载对应的 mac 版本的安装包,双击即可安装,无须配置环境变量。
  • 官方下载地址:
    https://nodejs.org/en/download/

安装 appium

Appium 分为两个版本,一个是有界面的Appium(下载安装文件即可安装),一个是无界面的命令行版本(需要命令安装),建议都安装上。

  • 有界面的Appium Desktop:包含 appium 服务,录制工具,查看页面布局及查找元素的功能。
  • 无界面的Appium:只提供了appium服务功能

方法一: 官方推荐直接,(网络环境要求高,如果出现超时,下载不下来,不推荐)

npm install -g appium

方法二:先安装cnpm 再安装 appium (曲线救国,推荐),一定要加上 -g 参数

npm install -g cnpm --registry=https://registry.npm.taobao.org #挂载淘宝源
cnpm install -g appium@1.15 #全局安装appium

3、安装 appium-doctor,检查你的appium环境是否安装成功

cnpm install -g appium-doctor

安装完成,可以打开一个新的命令行窗口(windows上cmd,Mac 上是Terminal),输入 appium-doctor ,会出现如下提示,红框里面没有报错即可, 其它的画叉的暂时可以不用安装。

image

4、运行 appium server

有界面的,打开界面,点击 Start Server , 不报错说明成功,如下图:

image

打开terminal,输入 appium 回车,不报错说明安装成功。

image

运行,验证环境

上面安装完成就可以运行一个简单的appium demo 脚本,能够启动起来应用说明安装成功。

创建测试文件 test_demo.py

from appium import webdriver
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='6.0'
desired_caps['deviceName']='emulator-5554'
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='com.android.settings.Settings'
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

IOS配置

环境搭建

  • xcode

依赖工具包

  • brew install --HEAD ideviceinstaller

  • brew install --HEAD libimobiledevice

  • brew install ios-deploy

  • brew install carthage

github项目

xocode相关

  • bundle identifier:类似于android的包名,如果本地调试可以随便填写,如果要发布则不能随便填写。

  • signing:签名需要证书才能构建编译,在模拟器和真机上运行。

  • .app文件:项目编译后生成的项目打包代码,其实是一个目录,zip文件

  • .ipa文件:经过签名后的打包文件,本质是一个zip文件

基本操作

  • 查看模拟器列表: instruments -s devices

  • 查看真机列表: idevice_id -l

  • 安装APP: ideviceinstaller -i demo.app 高版本使用: ios-deploy

  • 查看app的bundleid: ideviceinstaller -l

命令行编译

  • xcodebuild -scheme UICatalog -target iOS clean build

  • xcodebuild -scheme UICatalog -target iOS archive

  • 证书相关

  • team id:注册成为开发者,付费后才有;真机测试需要,模拟器不需要(如果只是需要一个证书,用自己的appid登录即可)

ios模拟器测试

  • Capabilitie参数
{

"platformName": "ios",

"app": "/Users/jaxon/Library/Developer/Xcode/DerivedData/UIKitCatalog-batnzjgnhedojmafwlejnamdeeup/Build/Products/Debug-iphonesimulator/UIKitCatalog.app",

"automationName": "XCUITest",

"deviceName": "iPhone 11 Pro",

"platformVersion": "13.3"

}

app: xcode选择模拟器编译后的app位置

[
image

遇到的问题

  • 编译WDA报错:RoutingHTTPServer/RouteResponse.h’ file not found

  • /usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent ,执行
    sh ./Scripts/bootstrap.sh

  • 然后在wda项目路径下执行 sh ./Scripts/bootstrap.sh

ios真机测试

  • Capabilitie参数
{

"platformName": "ios",

"app": "/Users/jaxon/Library/Developer/Xcode/DerivedData/UIKitCatalog-batnzjgnhedojmafwlejnamdeeup/Build/Products/Debug-iphoneos/UIKitCatalog.app",

"automationName": "XCUITest",

"deviceName": "iPhone",

"udid": "auto",

"xcodeOrgId": "7******S",

"xcodeSigningId": "iPhone Developer"

}

app: xcode选择真机编译后的app位置

xcodeOrgId:Team ID

udid:auto会根据deviceName返回的参数自动获取udid

注意:编译成功后需要在手机里信任证书

WDA项目配置(自行下载的WDA):

  • 选择WebDriverAgentLib,设置对应的team、certificate
image
  • 选择com.facebook.WebDriverAgentRunner,设置对应的team、certificate
image
  • com.facebook.IntegrationApp,设置对应的team、certificate
image

ps:设置过程中可能会报错Failed to register bundle identifier.

解决办法:因bundle identifier不是唯一的,修改为唯一的即可

  • 选择WDA-真机,进行build

    image

appium-WDA项目配置(appium自带的WDA):

  • 选择WebDriverAgentLib,设置对应的team、certificate

    image
  • com.facebook.IntegrationApp,设置对应的team、certificate
image
  • com.facebook.IntegrationApp,设置对应的team、certificate

    image
  • 选择WDA-真机,进行build

    image

注意:需对证书进行信任

构建完成后,点击product-test,在真机上安装WDA,启动appium即可

遇到的问题

image

根据Appium日志内关键词 xcodebuild build-for-testing test-without-building -project 查找appium自带的WDA路径,打开后检查对应的team、certificate,正确配置完成后,重新编译,安装即可

………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览