Appium iOS自动化测试入门流程

5,438 阅读2分钟

关于 Appium 的介绍以及为什么选择Appium做自动化测试的原因就不多说了,Appium支持多种语言(ruby,Java,Python,PHP...)从这一点来看,还是很有学习的必要的。谁都能用。

本人iOS开发出身,就简单介绍Appium在iOS端的测试流程吧。

MAC电脑上 Appium 的安装流程

mac 需要先安装 xcode node homebrew python

流程图

graph LR
    conditionA[需要安装]
    conditionA --> conditionB[AppiumServerGui]
    conditionA --> conditionC[AppiumInspector]
    conditionA --> conditionD[carthage]
    conditionA --> conditionE[appium-doctor]

下载AppiumServerGui和AppiumInspector

截屏2021-10-12 下午10.29.47.png

  1. 安装 Appium Server Gui 下载链接

  2. 安装 Appium Inspector 下载链接

注意如果提示如法打开软件,需要在 系统偏好设置->通用 下方选择仍要打开

  1. 安装 appium-doctor
安装:npm install -g appium-doctor
执行:appium-doctor --ios

这是执行 appium-doctor --ios后 一部分的截图

截屏2021-10-12 下午11.14.23.png

  1. 安装 carthage
brew install carthage

开始测试

1,真机测试

1.1 准备工作:

① 一个苹果的开发者ID和有效的开发者对应的配置文件及签名文件;
② 一台iPad或者iPhone(把UDID加入证书里);
③ 获取待测试应用的源码(或者让iOS开发人员为你的机型编译一个.app结尾的包)

注意事项:真机调试时的app必须是包含描述文件的app文件,不能选择虚拟器生成的沙漏里的app文件。

1.2 获取 开发包 .app 结尾

最简单的办法就是 xcode 连接真机 运行之后在 Products 文件夹直接拷贝出来

1.3 WebDriverAgent使用

  1. 进入到 appium-webdriveragent 目录
cd /Applications/Appium\ Server\ GUI.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent

注意 WebDriverAgent 一定要用 Appium Server Gui 安装文件里的,不要从github下载,下载下的版本编译一直报错,本人在这里踩坑花了一个多小时,

  1. 修改scheme 选择测试的真机 截屏2021-10-12 下午10.53.32.png
  2. 修改 WebDriverAgentRunner 的 Team

截屏2021-10-12 下午11.29.47.png

  1. commond + u 运行测试

  2. 手机上会新建一个无图标的WebDriverAgent的应用,

WechatIMG335.jpeg

并且console输出如下信息则说明启动成功

截屏2021-10-12 下午11.33.10.png

1.4 配置 Appium Inspector

我用的iPhone 12 iOS 14.7.1 系统

截屏2021-10-13 上午8.56.32.png

1.5 Python 脚本基本配置

app = os.path.abspath('.app包的绝对路径')
driver = webdriver.Remote(
        command_executor='http://127.0.0.1:4723/wd/hub',
        desired_capabilities={
            'app': app,
                    'udid': '设备的udid',
                    'platformName': 'iOS',
                    'platformVersion': '14.7.1',
                    'bundleId': '***',
                    'autoAcceptAlerts': 'true', # 弹窗自动选择为true XCUITest 下不生效
                    'waitForAppScript': '$.delay(5000); $.acceptAlert(); true;', # XCUITest 生效
                    'deviceName': 'iPhone 12'
            })

参考资料