IOS自动化测试 Appium ios 使用教程
最近在集成IOS的自动化测试,发现官网的Appium没有IOS相关的介绍,网上的一些教程都比较老了,总结一下:
只需要安装一次准备工作:(只支持MAC 机器)
一、电脑环境安装
》安装Homebrew
在Mac上安装Homebrew是一种常见的方法来安装和管理各种开源软件包。Homebrew是一个Mac OS平台上的软件包管理工具,它提供了一个简单的方式来安装和管理软件包。以下是如何在Mac上安装Homebrew的步骤:
1. 打开终端
首先,你需要打开终端。你可以通过在“应用程序”>“实用工具”文件夹中找到并打开“终端”来实现,或者使用快捷键Command + Space
打开Spotlight搜索,然后输入“Terminal”并打开它。
2. 安装Homebrew
在终端中,你可以使用Ruby的包管理工具RubyGems来安装Homebrew。打开终端后,复制并粘贴以下命令:
/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"
这个命令会从Homebrew的官方GitHub仓库下载安装脚本,并执行它来安装Homebrew。
3. 安装过程
安装过程中,系统可能会提示你输入管理员密码。这是因为Homebrew需要在系统级别进行一些操作,比如创建目录等。输入你的Mac用户密码后,按回车键继续。
4. 安装完成
安装完成后,Homebrew会提示你运行一些额外的命令来配置你的shell环境。通常,它会建议你在你的shell配置文件中(如.bash_profile
、.zshrc
等)添加一些行。例如,它可能会建议你运行:
echo \'eval \"$(/opt/homebrew/bin/brew shellenv)\"\' >> ~/.zshrc
或者
echo \'eval \"$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)\"\' >> ~/.zshrc
根据你的系统配置和使用的shell类型(如bash或zsh),这一步可能会有所不同。你可以选择复制并粘贴这些命令到你的终端中,或者直接按照Homebrew安装结束时的提示操作。5. 验证安装
为了验证Homebrew是否正确安装,你可以在终端中运行:
brew doctor
》安装 node 管理工具 n,并配置 全局安装地址:(永远避免使用 sudo 操作 npm/n)
1、确保已安装 Node.js 和 npm
(如果未安装,先通过 Node.js 官网 下载安装)
node -v # 检查是否安装
npm -v
2、全局安装 n (开始不用sudo安装不了)
sudo npm install -g n
3、修复权限
# 1). 将目录所有权归还当前用户(重要!)
sudo chown -R $(whoami):admin /usr/local/bin
sudo chown -R $(whoami):admin /usr/local/include
sudo chown -R $(whoami):admin /usr/local/n
sudo chown -R $(whoami):admin /usr/local/share/doc
sudo chown -R $(whoami):admin /usr/local/share/man
# 2). 修复权限模式
sudo chmod 755 /usr/local/bin
sudo chmod 755 /usr/local/include
sudo chmod 755 /usr/local/share/doc
sudo chmod 755 /usr/local/share/man
4、安装/切换 Node 版本
n 24.0.0 # 安装指定版本
5、设置环境变量
# 1). 编辑 Shell 配置文件
echo \'export PATH=\"/usr/local/n/versions/node/$(node -v | cut -c 2-)/bin:$PATH\"\' >> ~/.zshrc
# 2). 立即生效
source ~/.zshrc
》安装 APPIUM工具集合:
官网:安装 Appium - Appium Documentation
npm i -g appium
安装完成应该在这个位置:/usr/local/n/versions/node/24.0.0/lib/node_modules
appium -v 输出如下说明OK
2.19.0
》安装常用必须的 appium 驱动:
官网:Appium驱动 - Appium Documentation
appium driver install xcuitest
appium driver install uiautomator2
appium driver install --source=npm appium-flutter-driver
》安装常用必须的 appium 插件:
appium plugin install universal-xml
》安装依赖库:
pip3 install Appium-Python-Client selenium pytest
》Xcode安装:
直接从 MAC的 App store 中安装
》安装 Carthage(依赖管理工具):
brew install carthage
》安装 WebDriverAgent:
npm install -g appium-webdriveragent
》根据平台,安装常用工具(里面有安装方法)
tidevice: https://github.com/alibaba/tidevice
tidevice3:https://github.com/doronz88/pymobiledevice3
pymobiledevice3:https://github.com/doronz88/pymobiledevice3
libimobiledevice : 执行:brew install libimobiledevice 项目地址 :https://github.com/libimobiledevice/libimobiledevice
安装后查看应用的 Bundle Identifier(包标识符 就是android的包名概念)
t3 app list
二、设置appium-webdriveragent 签名:
打开终端命令窗口
cd /usr/local/n/versions/node/24.0.0/lib/node_modules/appium-webdriveragent
open WebDriverAgent.xcodeproj
打开 Xcode 任务:
设置1:
设置2:
选择设备执行测试前授权设置:
1、选择下面标识的任务和设备
2、Product - 》 Test
3、授权,执行后会在手机上安装:WebDriverAgent ,同时首次会弹出:
手机的 设置-通用-VPN与设备管理- 信任设置的账号
4、再次执行:Product - 》 Test 可以看到服务正确启动:
日志:
iphone手机:
有些教程写的如下:根本不需要
通过上面给出的 IP地址 和端口,加上/status合成一个url地址。例如 http://192.168.1.104:8100/status,然后浏览器打开。如果出现一串 JSON 输出,说明安装成功了。
这个没有遇到:
有些国产的iPhone机器通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上。需要用到之前安装的 libimobiledevice 这个库。
-
# 把当前连接的 iOS 设备端口转发到 MacOS 的端口
iproxy 8100 8100
另外:启动 appium-webdriveragent 服务可以在上面授权做完后,以后测试使用如下脚本进行启动:
# 解锁keychain,以便可以正常的签名应用
PASSWORD=\"123.com\"
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
# 获取第一台设备的UDID
UDID=$(idevice_id -l | head -n1)
#UDID=$(idevice_id -l | head -n2 | tail -n1) #选择第二台设备
# 进入appium-webdriveragent目录
cd /usr/local/n/versions/node/24.0.0/lib/node_modules/appium-webdriveragent
# 运行测试
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination \"id=$UDID\" test
到此为止测试环境已经设置完成,恭喜!
二、下面开始正常测试:
1、编写UI测试脚本
使用python 编写测试脚本:(注释掉的参数不是必须的参数,方便对多个手机批量执行)
from appium import webdriver
from appium.options.ios import XCUITestOptions
from appium.webdriver.common.appiumby import AppiumBy
import time
# 1. 配置 Capabilities
options = XCUITestOptions()
# options.platform_name = \'iOS\'
# options.platform_version = \'18.5\' # 改为你的iOS版本
# options.device_name = \'iPhone 16e\' # 设备名称(真机或模拟器)
# options.automation_name = \'XCUITest\'
options.app = \'net.qihoo.360mobilesafe\' # 你的App bundle ID
options.udid = \'00008110-00063C540AD3601E\' # 真机UDID(通过 `idevice_id -l` 获取)
# 2. 连接 Appium Server
driver = webdriver.Remote(
\'http://localhost:4723\', # Appium默认端口
options=options
)
try:
# 3. 等待App启动(隐式等待)
driver.implicitly_wait(8)
for a in range(5):
# 4. 定位并点击 按钮
# 方式:通过 accessibility_id(推荐)
next_btn = driver.find_element(AppiumBy.ACCESSIBILITY_ID, \"卫士\")
next_btn.click()
driver.implicitly_wait(8)
next_btn = driver.find_element(AppiumBy.ACCESSIBILITY_ID, \"守护中心\")
next_btn.click()
driver.save_screenshot(\'screenshot.png\')
print(\"成功点击 测试完成\")
time.sleep(2) # 等待操作生效(可选)
finally:
# 5. 关闭会话
driver.quit()
2、启动appium 服务
打开终端,输入 appium
3、执行测试脚本完成:
后面有可以做CI集成,多设备执行等。