IOS 自动化测试环境搭建(Python & Java)

本贴最后更新于 954 天前,其中的信息可能已经事过境迁

一、前言

IOS的App自动化测试与Android的一样,也可以用appium来进行。但是IOS自动化依赖苹果的osx系统、Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机。Appium的环境配置有点麻烦,可能大部分时间都在处理各种稀奇古怪的报错,甚至于需要重装系统。

本文旨在记录配置过程(MacOS系统的Python和Java环境配置也有记录),给同道中人提供参考,让大家少走弯路。

二、环境依赖

1、环境依赖项

2、环境需求与支持

需求 版本最低要求 我的环境版本
Mac OSX 10.11+ macOS 11.3.1
iOS 9.3+ 13.3、14.7
Xcode 7+ 12.5
Appium 1.6+ 1.21.0
驱动程序 对应iOS版本
XCUITest Driver ios9.3或以上
UIAutomation Driver ios9.3以下

三、环境配置

1、xcode安装

Xcode是运行在操作系统Mac OS X上的集成开发工具(IDE),iOS自动化测试使用Xcode主要用于将绑定了苹果开发者证书的WebDriverAgent打包至iOS手机。

安装方式有两种,根据你的系统版本来选择。

方式一:Mac平台的App Store安装

通过App store安装的Xcode是最新版本,需要最新版macOS系统才能兼容。如果已经升级至最新系统,可以直接在App store下载安装。最好不要升级至最新系统,可能遇到其他兼容性问题。

方式二:离线包安装

你的macOS系统不是最高版本的时候,要保证最低版本需求:macOS在10.12以上,xcode在8.1以上。

离线包下载地址:https://developer.apple.com/cn/support/xcode/ (可以选择版本)

离线包的Xcode版本选择,最好是根据你的系统版本发布时间来定,选发布时间相近的版本。我的版本是:macOS 11.3.1 、Xcode12.5

2、Git安装

安装的Xcode自带Git程序,一般Xcode安装好后不需要再单独安装Git,验证Git环境即可。如果后面的环境依赖安装出现关于Git的报错,需要更新Git,或者卸载重新安装。验证安装:git --version验证git连接:ping github.com能够连接成功时,终端显示:

安装命令:brew install git

更新Git:brew upgrade git

  1. Homebrew安装(用brew来安装依赖)

Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。类似apt-get、yum。

安装途径有两种:国外源和国内园,推荐使用国内源,我使用国外源没成功过。

方式一(国外源):

官网:https://brew.sh/

在官网首页复制下面的安装命令,在终端执行命令安装:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

验证安装:brew -v

更新Homebrew命令:brew update && brew upgrade && brew clean

方式二(国内源):

上面的官网安装方法失败率很高,可以采用国内源安装。

homebrew国内源安装方法,终端执行下面的命令:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

终端运行时,根据提示操作:

安装结束后重启终端 或者 运行 source /Users/sinosun/.bash_profile 否则可能无法使用。

终端执行:brew update 保持最新版

最后验证安装:brew -v 得到版本号

参考链接:

https://blog.csdn.net/ljl6158999/article/details/118144440 (macOS升级后安装报错解决办法)

4、npm和nodejs安装

Appium是通过Node.js开发的http服务器,用来创建和控制WebDriver的session,因此需要安装Node.js。npm是Node.js的包管理工具,随同Node.js一起安装。

4.1、(方式一:brew在线安装)【我的nodejs版本是:16.6.0】

安装命令:brew install node 此方法安装的是最新版本

验证安装:node -v 得到版本号

npm -v 得到版本号

其它在线安装方法:(指定版本安装)

终端执行命令行找到自己合适的node版本 :brew search node

查询显示最高可以安装 node14 版本

安装命令:brew install node@版本号 (会将npm和nodejs一起安装)

绑定安装的node,命令:brew link --overwrite --force node@版本号

验证安装:node -v 得到版本号

npm -v 得到版本号

卸载node:

brew uninstall node@版本号 --force

例如:安装的是12.18.1,卸载命令:brew uninstall node@12 --force

4.2、(方式二:离线包安装)

brew在线安装是从官网下载,速度慢且成功率低,可以通过下载离线包安装解决。

nodejs官网下载地址:https://nodejs.org/en/ 点击“Current”区域稳定版。

安装包下载并安装后,同样在终端中输入node -v 、 npm -v 验证

4.3、cnpm国内源安装

NPM安装插件是从NPM官网下载对应的插件包,该网站的服务器在国外,经常会出现下载缓慢或出现异常,这时便需要找到另外的方法提供稳定的下载,这个方法就是CNPM。阿里巴巴的淘宝团队把NPM官网的插件都同步到了在中国的服务器,提供给我们从这个服务器上稳定下载资源。

CNPM同样是NPM的一个插件,要安装的话需要在终端执行以下命令:

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

验证安装:cnpm -v

4.4、npm安装插件常见报错

在终端通过npm安装插件时,前面加上“sudo”可以减少报错几率。(加上sudo后,命令以系统管理者的身份执行)

如果通过npm安装插件时,出现“npm ERR!”提示,表示安装失败。前缀加上sudo也报错,可以尝试国内源cnpm安装,只需要将命令中的npm换成cnpm。

如果终端安装过程中出现“npm WARN”提示,可以忽略。

5、libimobiledevice安装

libimobiledevice是一个使用原生协议与苹果IOS设备进行通信的库,相当于Android的adb。appium连接iOS设备必需要此依赖库,通过这个库Mac os可轻松获得iOS设备信息。支持iOS10以上系统

安装命令:brew install --HEAD libimobiledevice

卸载:brew uninstall --ignore-dependencies libimobiledevice

常用命令:

  1. idevice_id -l 显示当前所连接的设备[udid]
  2. ideviceinfo 获取设备信息
  3. idevicedate 获取设备时间
  4. idevicename 获取设备名称
  5. idevicescreenshot 截图
  6. ideviceinstaller -u [udid] -i [xxx.ipa] #xxx.ipa:安装文件路径
  7. ideviceinstaller -u [udid] -U [bundleId] #bundleId:应用的包名

检查安装:

报错参考:https://www.cnblogs.com/zhiaijingming/p/11005330.html

6、idevicesinstaller安装

ideviceinstaller是一个管理连接设备的工具,与ios-deploy、Android的adb功能类似。

ideviceinstaller的功能与libimobiledevice差不多,都可以获取iOS设备的udid、安装App、卸载App、获取bundleid等,但ideviceinstaller仅支持iOS9以下系统环境,libimobiledevice支持iOS10以上系统环境。

安装命令:brew install ideviceinstaller

常用命令:

1.ideviceinstaller -l 打印app列表

7、ios-deploy安装

ios-deploy是一个使用命令行安装ios app到连接设备的工具

原理是根据os x命令行调用系统底层函数,获取连接的设备、查询/安装/卸载app

iOS10以上系统使用appium,需要依赖ios-deploy

安装:sudo npm install -g ios-deploy 或 sudo cnpm install -g ios-deploy

安装指定版本的ios-deploy参考:https://www.jianshu.com/p/a100914ec784

ios-deploy常用命令:

1.ios-deploy -c 查看连接的设备

2.ios-deploy -c --no-wifi 查看连接的设备

3.ios-deploy --id [udid] --bundle [xxx.app] 安装应用到指定设备(其中xxx.app是Xcode编译后的ipa的路径)

4.ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] 卸载指定设备上的应用(根据包名,也就是bundleId)

5.ios-deploy --id [udid] --list_bundle_id 查看指定设备上安装的所有应用(包括系统应用和第三方)

例如: ios-deploy --id 770dfe115807e7d494b4721b1e4ebd6ecb9424d3 --list_bundle_id

6.ios-deploy --id [udid] --exists --bundle_id [bundleId] 检查指定设备上是否安装了某个应用

例如: ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.taozhen


注意:Xcode是通过离线包安装的,安装ios-deploy时会报错:

这个是由于Xcode没有设置版本的原因导致的,设置方法:进入Xcode偏好设置-->点击locations-->Comand Line Tools栏选择版本号,

然后重新执行安装命令。如下图:


检查安装:

安装错误解决参考:https://blog.csdn.net/weixin_44643020/article/details/88226097

8、Carthage安装

Carthage是一款iOS项目依赖管理工具,与cocoapods功能相似,可以帮助管理第三方依赖,类似于Java的maven。它会把第三方依赖编译成framework,以framework形式将第三方依赖加入到项目中进行使用和管理。自动化测试用到的WebDriverAgent通过Carthage管理项目依赖。

安装命令:brew install carthage

检查命令:carthage version

9、Appium安装 【我安装的appium版本:1.21.0】

appium安装有两种方式,命令行版本和桌面版本。

命令行版本appium打开速度快,可以开启多设备的自动化测试,常用于执行脚本。

桌面版本appium打开速度慢,常用于辅助元素定位。

9.1、命令行版安装

在appium官网(http://appium.io/)首页中有安装命令,直接复制至终端安装。命令如下:

1 > brew install node # 获取 node.js
2 > npm install -g appium # 获取 appium
3 > npm install wd # 获取 appium client
4 > appium & # 开启 appium
5 > node your-appium-test.js

上面的命令安装的是最新版本,如果要安装指定版本,执行下面的命令。

指定版本安装:

npm install -g appium@1.20.2 ---安装的版本是appium1.20.2

如果使用npm安装报错,命令行前加上sudo执行:

sudo npm install -g appium

卸载安装:

npm uninstall -g appium

检查安装:appium -v

9.1.1、官网安装不成功,可以试一试淘宝镜像源:

cnpm install -g appium

验证安装:appium -v

9.1.2、命令行打开appium

appium -a 127.0.0.1 -p4723 ---(默认端口4723可以任意修改,appium开启后监听端口是修改后的端口)

命令行参考:https://www.cnblogs.com/Dahlia/p/10516405.html

9.2、appium官网下载离线包安装http://appium.io/

10、appium-doctor环境检查

appium-doctor命令,可用于检查appium的相关环境是否配置成功。

安装:sudo npm install -g appium-doctor

或者 sudo cnpm install -g appium-doctor

卸载:npm uninstall -g appium-doctor

检查环境配置命令:

appium-doctor

appium-doctor --ios

appium-doctor --android

安装目录:

/usr/local/lib/node_modules/appium-doctor

10.1、iOS自动化测试环境检查

终端执行命令appium-doctor --ios后,即可开始检查iOS自动化测试所需的appium环境。

检查结果中没有出现红色的“X”时,表示iOS自动化测试所必需的依赖环境都安装好了。

检查结果中有黄色的“X”时(如上图),表示非必需的环境依赖,可以暂时不管,等以后用到了这个模块再去安装。

10.2、Mac环境Android自动化测试环境检查

终端执行命令appium-doctor --android,检查Mac中通过appium对Android做自动化测试的环境。

上图中红色的“X”,表示Android自动化测试所必需的环境依赖,我最后再介绍这些依赖的安装。

环境安装走到这一步了,就可以对iOS模拟器进行自动化测试了。如果要连接控制iOS真机,还需要将webdriveragent构建至真机,Mac系统才能控制手机。

11、WebDriverAgent安装

WebDriverAgent简称WDA,是由Facebook推出的一款移动端测试框架。它是在iOS客户端实现了一个WebDriver的Server,借助这个server,可以远程控制iOS设备进行测试。官网介绍Appium驱动真实设备的地址:http://appium.io/docs/en/drivers/ios-xcuitest-real-devices/

Appium与iOS手机进行通讯就是借助的WDA,配置WDA至iOS手机之前,需要通过Xcode将苹果开发者证书编译进WDA才会生效。这个编译证书的过程是报错几率最高的步骤,我尝试好几次才找到最有效的方法。

11.1、申请苹果开发者证书

苹果开发者证书有免费和收费的,对于自动化测试来说免费版的就够用了,只不过通过Xcodego构建编译进WDA的证书只有7天有效期,7天后还需要重新构建一次。

免费版申请过程很简单,可以参考:https://www.cnblogs.com/zdx20/p/15084391.html

11.2、WebDriverAgent目录

WebDriverAgent有两种来源,一种是从GitHub拉取,通过Xcode编译证书后替换掉appium里面的WebDriverAgent;另一种是直接使用appium集成的WebDriverAgent,Xcode编译证书后使用。

网络资源一般介绍第一种的比较多,但是这种方法已经不适用于新版本的Appium和Xcode。从GitHub(地址:git clone https://github.com/facebook/WebDriverAgent.git)拉取的WebDriverAgent有很长时间没有更新了,通过Xcode编译证书时有很多兼容性问题。如果选择今年发布的Appium和Xcode,直接使用appium集成的WebDriverAgent基本不会报错,我选择的这种方式。想通过第一种方式可以参考:https://www.cnblogs.com/xiehong/p/14898938.html 11.2.1、进入appium的WebDriverAgent目录

更多内容请访问:https://www.cnblogs.com/zdx20

回帖
请输入回帖内容 ...