学习步骤:

  1.能够搭建iOS自动化测试所需要的环境

  2.能够使用模拟器进行iOS自动化测试

  3.能够使用真机进行iOS自动化测试

一、环境搭建

应用场景

想要进行iOS自动化测试,前提条件需要进行环境搭建

想要的环境

  • 必备软件:

    • MacOS系统电脑(iOS设备只能在Mac系统上运行自动化)
    • Xcode软件 (AppStore搜索Xcode并下载)
    • 待测试的iOS项目(公司项目的bundleId,可以找开发人员要)
    • appium Desktop(链接:https://pan.baidu.com/s/1G9ujw3T4HqUQBSh9UC-MoA?pwd=p000  提取码:p000)
    • python(链接:https://www.python.org/downloads/macos/)本人用的是v3.7
    • pycharm(链接:https://www.jetbrains.com.cn/en-us/pycharm/download/#section=mac   社区版:Community)
    • node js(https://npm.taobao.org/mirrors/node/v10.15.0/node-v10.15.0.pkg)v 10.5.0
    • cnpm(npm install -g cnpm --registry=https://registry.npm.taobao.org)v 5.2.0
  • 终端输入:
    • ios-deploy依赖库   cnpm install -g ios-deploy
    • brew  ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)
    • libimobiledevice 依赖库   brew install --HEAD libimobiledevice
      • 可能会出现问题

        • 报错:Requested 'libusbmuxd >= 1.1.0' but version of libusbmuxd is 1.0.10
        • 解决方法:(以下命令按顺序执行)
        • brew update
        • brew uninstall --ignore-dependencies libimobiledevice
        • brew uninstall --ignore-dependencies usbmuxd
        • brew install --HEAD usbmuxd
        • brew unlink usbmuxd
        • brew link usbmuxd
        • brew install --HEAD libimobiledevice
    • carthage 依赖库   brew install carthage
  • java开发环境配置,参考博客:(21条消息) JAVA开发环境搭建_Krito.的博客-CSDN博客
  • iOS系统设备
  • Apple ID
  • WebDriverAgent
    • https://github.com/facebook/WebDriverAgent
    • 点击download zip

二、使用模拟器进行自动化测试

运行iOS程序到模拟器

步骤:

  1. 使用Xcode打开要运行的程序
  2. 选择要运行的程序和模拟器设备(Xcode自带iOS模拟器,不用单独下载)

  3. 快捷键command + r  运行(若运行不成功可以先在模拟器上构建webdriveragent程序)

查看iOS元素特征

步骤:

  1. 打开appium desktop
  2. 启动appium服务
  3. 点击右上角放大镜打开新的窗口

   

  4. 填写对应参数并启动

  ‘’automationName": "Appium", -- 默认是appium

  "platformName": "iOS", --设置应用平台

  “platformVersion": "10.3", -- 设置当前平台的系统版本,不需要设置到三位,设置两位就可以了

  ”deviceName": "iPhone7", --设置当前连接MAC本的手机名称,在设置里可以查到手机名

  “bundleId": "com.testi.test.uuaatt",--设置当前应用的activename,这个启动名称可以跟相应的开发人员要,也可以自己通过其他工具看一下(工具的话请大家问度娘吧~~)

  “wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100

最后start session就可以了,连上手机以后,手机上会自动装一个webdriverapp的应用,然后才会启动要测试的app。如果要写自动化脚本的话,可以边操作边抓取相应的元素。

  

编写和运行自动化脚本

前置代码

  from appium improt webdriver

  desired_caps = dict()

  desired_caps['platformName'] = 'iOS'

  desired_caps['platformVersion'] = '12.1'

  desired_caps['deviceName'] = 'iPhone 8'

  desired_caps['app'] = 'com.itcast.HMiOSTest'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps

三、使用真机进行自动化测试

运行iOS程序到真机(两个方案)

方案一

步骤:

  1. 在Xcode中登录自己的Apple ID
  2. 选择将要运行的程序和设备
  3. 快捷键command + r 运行
  4. 在手机中进入 设置 - 通用 - 设备管理 - 开发者APP  - 信任程序
  5. 重新command + r 运行

配置 WebDriverAgent

步骤:

  1. 下载最新的WebDriverAgent后,使用Xcode启动WebDriverAgent.xcodeproj
  2. 配置WebDriverAgentLib的开发者信息
  3. 配置WebDriverAgentRunner的开发者信息(与WebDriverAgentLib配置方法一致)
  4. 配置IntegrationApp的开发者信息(与WebDriverAgentLib配置方法一致)
  5. 修改WebDriverAgentRunner的Product Bundle Identifier
  6. 修改IntegrationApp的Product Bundle Identifier(与WebDriverAgentRunner修改方法一致)
  7. 数据线连接真机
  8. 选择将要运行的WebDriverAgent 和真机设备
  9. 使用command + u 运行
    • 构建成功后会在log中出来一个url地址
    • 在浏览器中打开这个地址,如果显示一串json数据即表示为正确连接手机且真机上会出现一个没图标的webdriveragent程序

方案二

拿到自己公司的Bundle Identifier(又叫包名)

运行自动化脚本   

步骤:

  1. 修改真机对应的 platformVersion、deviceName
  2. 查看该设备udid并增加为启动参数
  3. 运行即可
  4. 这样连接真机应该是没问题了,然后自己如果写了测试脚本,跑脚本前先要安装相应的语言服务包,比如appium-python-client

  ‘’automationName": "Appium", -- 默认是appium

  "platformName": "iOS", --设置应用平台

  “platformVersion": "10.3", -- 设置当前平台的系统版本,不需要设置到三位,设置两位就可以了

  ”deviceName": "iPhone7", --设置当前连接MAC本的手机名称,在设置里可以查到手机名

  “bundleId": "com.testi.test.uuaatt",--设置当前应用的activename,这个启动名称可以跟相应的开发人员要,也可以自己通过其他工具看一下(工具的话请大家问度娘吧~~)

  "udid":" ",--设置当前手机的udid,通过iTunes拷贝过来,建议还是拷贝过来,太长太难输了

  "xcodeOrgId":"123ADE4Y56",--十位字符的组织ID,是苹果开发证书的组织单位,appium可以通过十位组织单位ID找到相应的组织,如果是连接真机测试APP的话,必须要设置    组织参数。

  ”xcodeSigningId": "iPhone Developer", --这里参数是固定的,就这样写

  “wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100

最后start session就可以了,连上手机以后,手机上会自动装一个webdriverapp的应用,然后才会启动要测试的app。如果要写自动化脚本的话,可以边操作边抓取相应的元素。

参考资料

1)https://www.cnblogs.com/jiguanghover/p/12526848.html

注:该地址为搭建环境过程中可能会遇到的问题及对应解决方法

2)想要通过pip安装python依赖的任何模块库,只要提示超时均可以使用固定语句,指定国外源来下载
python -m pip install 模块名 -ihttp://pypi.douban.com/simple --trusted-host pypi.douban.com

  

  

iOS自动化测试的更多相关文章

  1. 零成本实现Android/iOS自动化测试:基于Appium和Test Perfect

    https://item.taobao.com/item.htm?spm=a230r.1.14.14.42KJ3L&id=527677900735&ns=1&abbucket= ...

  2. mac上搭建appium+IOS自动化测试环境(一)

    阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...

  3. InstrumentDriver,对iOS自动化测试说 Yes!

    InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例. 研究过iOS自动化测试的同学肯 ...

  4. mac上搭建appium+IOS自动化测试环境(二)

    上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...

  5. appium ios 自动化测试

    iOS自动化测试:Appium 从入门到实践https://www.jianshu.com/p/43f858180557appium自动化测试iOS Demohttps://www.jianshu.c ...

  6. 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结

    环境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6 ①获取手机屏幕size:长.宽 &l ...

  7. 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置

    在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...

  8. iOS自动化测试的那些干货

    前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改. 大多数的iOS App(没有持续集成)迭代流程是这样的 也就是说,测试是发布之前的最后一道关卡.如果bug不能在测试中发现,那么bug就会抵 ...

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

         一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.A ...

  10. Airtest结合tidevice实现IOS自动化测试

    这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...

随机推荐

  1. postgresql源码解读

    大量模块源码解读 https://blog.csdn.net/cuichao1900?type=blog 存储管理(内存管理.外存管理)源码解读,每行都有注释 https://blog.csdn.ne ...

  2. 自定义select组件

    (声明:当前记录篇参考于该人员 https://www.jb51.net/article/166679.htm ) 一.创建组件 1.新建文件夹:select 2.新建Component: selec ...

  3. 一、MySQL 函数

    1.MySQL 字符串函数 函数 描述 实例 结果展示 说明 REPLACE(s,s1,s2) 将字符串s2代替字符串s中的字符串s1 SELECT REPLACE(ccc.contract_no,& ...

  4. hyperfine spectra

    !Hyperfine spectradefine int n xlet xlet name spect-'x'!file in 'name'.basfindget 3set mod x aset un ...

  5. GraalVM, Native Image, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么

    GraalVM, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么 GraalVM是一个JDK发行版,支持 ...

  6. 修改文件时mmap如何处理

    拷贝二进制(elf)文件 在拷贝二进制文件的时候,如果文件是一个可执行文件,并且有一个进程在运行这个可执行文件,那么拷贝的时候会出现"文本忙"(ETXTBSY)的错误提示,并且拷贝 ...

  7. vvv,具名插槽

    <!DOCTYPE html> <html> <head> <script src="a.js"></script> & ...

  8. 运用python中装饰器方法来解决工作中为原有代码添加功能问题

          Python  装饰器 在实际的工作中,经常碰到领导或产品经理会提出很多甚至(变态)的产品要求,作为python开发,好不容易完成领导的需求,做出一个产品,并且经过测试成功上线.突然有一天 ...

  9. nginx4层代理ssh服务

    四层代理依赖模块ngx_stream_core_module,默认情况下,此模块不构建,应使用配置参数启用 --with-stream 配置文件内容: ... stream { upstream ss ...

  10. fastadmin打包插件

    <?php namespace app\command; use think\console\Command; use think\console\Input; use think\consol ...