学习步骤:

  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. Java包机制 与Javados 命令

    package: 定义包 import  : 导入包 com.wang.test.* :点* 是导入当前包下的所有类 @author  :注释作者名 @version :注释版本号 @since    ...

  2. 达芬奇18.1.2安装包下载+软件详细破解安装教程(Win&Mac)

    DaVinci Resolve v18.1.2是一款在同一个软件工具中,将剪辑.调色.视觉特效.动态图形和音频后期制作融于一身的解决方案!它采用美观新颖的界面设计,易学易用,能让新手用户快速上手操作, ...

  3. C++ STL摘记

    一.string类补充 1.函数示例: (1)find和rfind函数,返回的是下标或者string::npos index=ss.find(s1,pos,num) find从pos(包括)开始往右查 ...

  4. Unity旧版图集和新版图集

    1.关于旧版图集 ===>结论:设置PackingTag就可以了. ===>分析:设置好PackingTag,那么在进行打包的时候,同一个标签的会被打到1个图集里面,图集最大为2048x2 ...

  5. JS字符串拼接的方法及性能比较

    一.+和+=str += "one" + "two";这段代码在运行过程中,会经历四个步骤:1.在内存中创建一个临时字符串2.将连接后的字符串"one ...

  6. 蓝桥杯训练赛二-1199 问题 E: 哥德巴赫曾猜测

    题目描述 德国数学家哥德巴赫曾猜测:任何大于6的偶数都可以分解成两个素数(素数对)的和.但有些偶数可以分解成多种素数对的和,如: 10=3+7,10=5+5,即10可以分解成两种不同的素数对 输入 输 ...

  7. Linux系统配置安装jdk

    菜鸟新人搭建服务器,目前不深入原理,只配置 1.官方自行下载Linux版本jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk ...

  8. HttpClient常用的一些常识

    HttpClient是目前我们通讯组件中最常见的一个Api了吧.至少从我目前接触到与外部系统通讯的话是这样的.下面我将我自己常用的一些知识总结一下. 因为本猿也是边写边总结,有啥不对的还望多多指出. ...

  9. mybatisplus SQL一对多

    https://blog.csdn.net/Isyoubao/article/details/122212113 重点:<collection property="nspSchedul ...

  10. MSDTC突然停用了,后台数据无法更新

    由于前台电脑停电突然关机,导致重启后发现MSDTC无法更新数据,重新添加了link,只能查询,更新失败,报错:无活动事务 1.修改host设置,在C:\Windows\System32\drivers ...