前言
最近在搞iOS自动化环境基于Appium框架,Appium框架搭建iOS每当捡起来使用就各种坑,总结一下iOS自动化环境搭建问题,避免其他同学踩坑~
搭建流程
苹果开发者证书
首先需要准备好苹果开发者账号,需要打包WDA使用。
证书种类如下:
Apple开发者账号共有三种类型:个人类型的开发者账号、公司类型的开发者账号、企业类型的开发者账号。三种账号各有所长,如何选择还需要看实际的应用情况。
由其可见苹果对证书要求非常严格,必须在证书设备列表中的设备才能安装打包后的app。
1、可以使用公司苹果开发者账号,需要找开发同学加权限
2、可以使用个人免费开发者账号
由于大多数同学情况可能仅有个人免费开发者账号,下面着重介绍这种方式做自动化测试。
个人免费开发者账号
先安利一下简书上有关申请个人免费开发者账号的贴子,传送门
总结内容:
1、注册apple账号
2、xcode中的Preferences添加apple账号
3、注册的账号默认是赋予个人免费开发者权限的
4、个人免费开发者默认有效期是7天,过期需要重新签名
5、个人免费开发者的设备安装名单是3台
下图是我自己个人开发者账号
开发者账号的意义
在这里先抛砖引玉说下,为什么使用开发者账号?
1、如果是模拟器不需要开发者账号,因为打包的时候不会做app签名验证
2、打包被测app给真机安装
3、WebDriverAgent安装使用
安装ideviceinstaller
ideviceinstaller是一个命令行工具,主要用于管理iOS设备上应用程序的安装与卸载,以及查看相关信息,在appium中会使用到。
Intel芯片:
代码语言:javascript复制brew uninstall ideviceinstaller
brew install ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew uninstall --ignore-dependencies libimobiledevice
Homebrew是一款自由及开放源代码的软件包管理系统,用以简化 macOS 和 linux 系统上的软件安装过程。它拥有安装、卸载、更新、查看、搜索等很多实用的功能,通过简单的一条指令,就可以实现包管理,十分方便快捷。
考虑到下载速度,建议下载前配置brew下载源地址:
代码语言:javascript复制# 查看 brew.git 当前源
$ cd "$(brew --repo)" && git remote -v
origin https://github.com/Homebrew/brew.git (fetch)
origin https://github.com/Homebrew/brew.git (push)
# 查看 homebrew-core.git 当前源
$ cd "$(brew --repo homebrew/core)" && git remote -v
origin https://github.com/Homebrew/homebrew-core.git (fetch)
origin https://github.com/Homebrew/homebrew-core.git (push)
# 修改 brew.git 为阿里源
$ git -C "$(brew --repo)" remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git
# 修改 homebrew-core.git 为阿里源
$ git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.aliyun.com/homebrew/homebrew-core.git
# zsh 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.zshrc
$ source ~/.zshrc
# bash 替换 brew bintray 镜像
$ echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles' >> ~/.bash_profile
$ source ~/.bash_profile
# 刷新源
$ brew update
WDA下载和配置
WebDriverAgent(简称 WDA) 是 appium 底层和 xcuitest 通信的工具,WDA 也是 iOS 项目,所以也需要编译。
WDA下载
可以在github下载最新版本WDA。
代码语言:javascript复制git clone https://github.com/appium/WebDriverAgent.git
WDA配置
1、环境依赖: 安装最新版本的Xcode工具,可以去appstore下载。
2、安装依赖:
代码语言:javascript复制cd /npm/lib/node_modules/appium/node_modules/appium-webdriveragent && sh Scripts/bootstrap.sh
3、通过npm安装appium后,打开这个路径下文件
代码语言:javascript复制/npm/lib/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj项目中有用的就是WebDriverAgentLib和WebDriverAgentRunner
4、配置WebDriverAgentLib
需要登录一个apple id的账号,可以去develop apple注册个人免费的开发者账号,可以免费调试7台手机。
选择automatically manage signing(自动管理证书) ,设置自动管理证书后xcode会根据账号证书和苹果开发者中心设置的内容,自动生成描述文件并下载到机器中使用。
选择WebDriverAgentLib的构建按钮,如果不出意外的话会在电脑上安装成功。
配置WebDriverAgentRunner,选择automatically manage signing(自动管理证书)。
修改Product Bundle Identfier,需要一个独一无二的Bundle ID,
WDA启动
设备信任 WDA 由于 iOS 安全机制,自己 build 的 app默认不信任的,所以需要在设置->通用->描述文件于设备管理中信任 WDA,否则 WDA 不能启动。
记录一些坑
appium相关
1、因为默认npm安装的目录在/user/local下,如果安装在这个目录下打开WebDriverAgent.xcodeproj文件会提示被锁
解决方式: 可以把npm安装到其他目录下,其他目录的权限会比较高
代码语言:javascript复制可通过命令 npm config get prefix,查看npm安装路径
2、appium安装版本,注意安装的版本是1.21.0,大于这个版本可能会有一定的问题
代码语言:javascript复制npm install -g appium@1.21.0
ideviceinstaller相关
安装 Rosetta,这是苹果开发的用于兼容x86架构软件的软件
代码语言:javascript复制
-
/usr/sbin/softwareupdate --install-rosetta
/usr/sbin/softwareupdate --install-rosetta agree-to-license
安装 Homebrew
x86_64 和 ARM64 版本的 homebrew 的安装目录是不一样的
x86_64 安装目录:/usr/local/homebrew
ARM64 安装目录:/opt/homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ideviceinstaller安装
代码语言:javascript复制brew uninstall ideviceinstaller
brew install ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew uninstall --ignore-dependencies libimobiledevice
WebDriverAgentRunner相关
1、 输入appium-doctor发现是没有安装Xcode Command Line Tools
解决方案: softwareupdate --all --install --force
2、Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 70
解决方案:升级系统,真机系统过高,Xcode无法适配
3、Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65
解决方案:这一般意味着必要的签名未设置正确,通过手工配置WDA签名
4、WebDriverAgenti启动后崩溃
解决方案:升级系统,真机系统过高,Xcode无法适配
5、提示'RoutingHTTPServer/RoutingConnection.h' file not found
解决方案:wda 根目录下,输入 sh ./Scripts/bootstrap.sh 下载依赖