目录
- 目前mobile自动化解决方案
- appium介绍
- appium框架介绍
- appium环境安装
- IOS配置
目前mobile自动化解决方案
- 自动化工具选择
- 单平台测试or 多平台测试?
- 是否有多设备同时测试的场景?
- 不局限于测试环境,任何版本任何环境都可以测试?
- 最擅长哪种开发语言?
- 当前市面是否有满足项目需求的测试工具?
- 是否需要二次开发?
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测试
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/
- 注意:
1、下载12.*版本双击安装即可。
2、无须配置环境变量,直接重启一个 cmd 输入下面的命令,能够查看这两个版本号即安装成功。
安装 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
,如下图:
例如上图,还差 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(注意最前面有一点)
b、设置Path,在其中加入两个配置信息
安装 android sdk
这里有两种安装方式,一种是命令行下载,一种是通过 Android Studio 下载SDK
如果安装的SDK有问题,可以尝试用另一种方式安装。
第一种方式:命令行安装
- 下载android sdk
https://www.androiddevtools.cn/
下载:android-sdk_r24.4.1-windows
下载下来之后找到 readme 文件并打开,下图
找到这个文件中最下方的一条命令,如下图,在命令行里执行这个命令更新sdk:
更新完的sdk 会多了一些文件夹,如下图:
更新完成之后,检查一下 build-tools/ 路径下,如果是 30 的版本,需要先删掉这个30的文件夹,然后手动的下载一个低于 28版本的build-tools/ 的放在目录下即可(推荐 28或者29的版本),如果下载多个版本会优先使用高版本的。(注意一定要删掉30这个版本的,版本太高appium运行不起来,需要依赖java1.9的版本)
- 下载 build-tools 方法
命令行,cd 到sdk 目录下,输入android 回车, 弹出如下界面,勾选想要下载的版本即可。
最后,检查对应的目录信息应该包含了以下几个:
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:
再到Path中添加下列信息,其中安卓版本build-tools目录下的数字配置为自己电脑上存在的版本。
第二种方式:先下载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 确定即可
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
,会出现如下提示,红框里面没有报错即可, 其它的画叉的暂时可以不用安装。
4、运行 appium server
有界面的,打开界面,点击 Start Server
, 不报错说明成功,如下图:
打开terminal,输入 appium
回车,不报错说明安装成功。
运行,验证环境
上面安装完成就可以运行一个简单的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项目
WDA 本身是一个基于webdriver协议的框架
Appium 是用WDA作为底层的IOS自动化框架
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位置
[遇到的问题
编译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
- 选择com.facebook.WebDriverAgentRunner,设置对应的team、certificate
- com.facebook.IntegrationApp,设置对应的team、certificate
ps:设置过程中可能会报错Failed to register bundle identifier.
解决办法:因bundle identifier不是唯一的,修改为唯一的即可
-
选择WDA-真机,进行build
appium-WDA项目配置(appium自带的WDA):
-
选择WebDriverAgentLib,设置对应的team、certificate
- com.facebook.IntegrationApp,设置对应的team、certificate
-
com.facebook.IntegrationApp,设置对应的team、certificate
-
选择WDA-真机,进行build
注意:需对证书进行信任
构建完成后,点击product-test,在真机上安装WDA,启动appium即可
遇到的问题
根据Appium日志内关键词 xcodebuild build-for-testing test-without-building -project
查找appium自带的WDA路径,打开后检查对应的team、certificate,正确配置完成后,重新编译,安装即可