IOS自动化测试

Appium 在 iOS 下工具的变革

  • iOS 9 之前一直以 instruments 下的 UIAutomation 为驱动底层技术(弊端由于 instruments 的限制,单台 mac 只能对应单台设备);
  • iOS 9.3 时代推出 XCUITest 工具,用以替代 UIAutomation;
  • iOS 10 时代苹果直接废弃了 UIAutomation、Facebook 推出 WebDriverAgent(实现的 server 能够支持单台 mac 对应多个设备);
  • Appium 在 iOS 9.3 后全面采用 WebDriverAgent 的方案。

从图中可以看出:

  • Client 端是 Appium 之前本身提供的;
  • Server 端是:WebDriverAgent 和 Instruments;( Appium 直接把 WebDriverAgent 整个集成进来,Instruments 是为了支持 iOS 9.3 之前的系统)
  • 最右边是一个手机
    • 之前 Server 是和 bootstrap.jar 通信,这里 WebDriverAgent 提供了 WebDriverAgentRunner(类似 bootstrap.jar 的功能),WebDriverAgent 与之通信;
    • WebDriverAgentRunner 是一个应用,Client 和 server 运行了之后,WebDriverAgentRunner 会被装到手机上,这个应用会接收来自 Server 的指令,并连接底层的 XCTest.framwork,并告诉 XCTest.framwork 操作手机进行自动化。

1.2.3 必装的软件

Xcode、command line tool、libimobiledevice、ios-deploy、carthage、WebDriverAgent、Appium。

  1. libimobiledevice / ideviceinstaller 库,相当于 android 的 adb,是 Appium 底层用到的工具之一,用于获取 iOS 设备信息。

其常用命令如下:

  • 查看当前所连接的设备

    idevice_id -l # 显示当前所连接设备的 udid
    instruments -s devices # 列出所有设备,包括真机、模拟器、mac

  • 安装应用

    ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 为应用在本地的路径

  • 卸载应用

    ideviceinstaller -u [udid] -U [bundleId]

  • 查看设备已安装的应用

    ideviceinstaller -u [udid] -l # 查看设备安装的第三方应用
    ideviceinstaller -u [udid] -l -o list_user # 同上,查看设备安装的第三方应用
    ideviceinstaller -u [udid] -l -o list_system # 查看设备安装的系统应用
    ideviceinstaller -u [udid] -l -o list_all # 查看设备安装的所有应用

  • 获取设备信息

    ideviceinfo -u [udid] # 获取设备信息
    ideviceinfo -u [udid] -k DeviceName # 获取设备名称 同命令 idevicename
    idevicename # 同上
    ideviceinfo -u [udid] -k ProductVersion # 获取设备版本 10.3.3
    ideviceinfo -u [udid] -k ProductType # 获取设备类型 iPhone 8,1
    ideviceinfo -u [udid] -k ProductName # 获取设备系统名称

  • 其他系统文件信息

    ideviceinfo # 获取设备所有信息
    idevicesyslog # 获取设备日志
    idevicecrashreport -e test # 获取设备 crashlog,test 是文件夹需新建
    idevicediagnostics # 管理设备状态 - 重启、关机、睡眠等

  1. ios-deploy 常用命令

    ios-deploy -c # 查看当前链接的设备
    ios-deploy --[xxx.app] # 安装 APP
    ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 卸载应用
    ios-deploy --id [udid] --list_bundle_id # 查看所有应用
    ios-deploy --id [udid] --exists --bundle_id # 查看应用是否安装

  2. carthage,项目依赖管理,主要是 WebDriverAgent 使用,WebDriverAgent 是用它做项目依赖的;

    公司 iOS 项目也使用 carthage,类似于 java 的 maven;

  3. ios-deploy、ideviceinstaller 类似 android 的 adb;

  4. authroize-ios,iOS 授权工具,主要用于模拟器中一些权限的授权;

    npm install -g authroze-ios
    sudo authroze-ios
  5.  

     

1.2.5.2 准备脚本

  • iOS 项目的 Desired_caps
Desired_caps:{
’platformName’:’iOS’,
‘platformVersion’:’10.3.3’,
‘devideName’:’iPhone 7 Plus’,
‘udid’:’’, #如果是真机的话必须提供
‘app’:’~/appPath/app.app’, #app路径,如果只填bundleId,那就是通过id启动已有的App
}
  • iOS 的元素定位
    • Appium Desktop - Inspect (推荐)
    • WebDriverAgent - Inspector

这里说说 Appium Desktop - Inspect 是怎么使用的。
- 打开并启动 Appium Desktop,点击软件右上角第一个按钮 “ start inspector session”;
- 会出现弹窗,弹窗里配置好 Desired_caps。

  • 定位方式推荐:AccessbilityId
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值