> 技术文档 > IOS自动化测试 Appium ios 使用教程

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 这个库。

  1. # 把当前连接的 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集成,多设备执行等。