iOS自动化测试神器,让你的测试轻松+愉快

news/2024/12/1 0:30:49/

大家好,我是测试BUG捕手

目录:导读

学习步骤:

一、环境搭建

应用场景

想要的环境

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

运行iOS程序到模拟器

查看iOS元素特征

编写和运行自动化脚本

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

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

配置 WebDriverAgent

运行自动化脚本   

写在最后


学习步骤:

  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开发环境配置,可以参考我以前发的博客
  • 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

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

 


http://www.ppmy.cn/news/160818.html

相关文章

编程之巅:第六站

编程之巅&#xff1a;第六站 前言 上一站&#xff0c;我们接触到一维数组的定义和基本的使用&#xff0c;再到数组的内存结构&#xff0c;然后升级到二维数组的定义和基本使用&#xff0c;再浅浅的谈论我对数组的基本算法和实现的认知&#xff0c;最后还需要掌握一个数组的工…

Java Set集合及Map集合详解

一、LinkedHashSet使用 1.1知识点&#xff1a; HashSet怎么使用LinkedHashSet就怎么使用 1.2直接上代码&#xff0c;可以和前面的文章做对比 package com.qf.linkedhashset_class;import java.util.LinkedHashSet; import java.util.Arrays; import java.util.Collections; …

世上最全的map集合体系的使用方法---喜欢请收藏

1.知识点&#xff1a;使用LinkedHashSet的方法 /*** 知识点&#xff1a;使用LinkedHashSet的方法* * class LinkedHashSet extends HashSet* HashSet怎么使用&#xff0c;LinkedHashSet就怎么使用*///创建LinkedHashSet集合对象LinkedHashSet<String> set new LinkedHa…

【PS3】二之国 白色圣灰的女王 日本制造的视觉效果

原文&#xff1a;http://www.element3ds.com/thread-29245-1-1.html 二之国 白色圣灰的女王 走向RPG的王道 日本制造的视觉效果 本作用CG再现了吉卜力工作室的温暖世界观。 作为把以前只能在电影作品中看到的世界积极运作的杰作&#xff0c;成为一个大话题。 这次因为在Level…

后台(11)——Servlet(3)

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架&#xff08;1&#xff09;— 核心基础 Android多分辨率适配框架&#xff08;2&#xff09;— 原理剖析 A…

图书排行:计算机书籍每周销量排行榜

LSGO软件技术团队每个 星期一&#xff0c;统计 京东网、当当网、互动出版社、中国图书网 关于计算机类书籍销量的 7日 排行数据&#xff0c;大家可参考这份排行来挑选技术书籍。 数据统计时间&#xff1a;2019/05/27 至 2019/06/02 京东网 Top01&#xff1a;数学之美&#xf…

读书笔记8 《所谓情商高,就是会说话》 佐佐木圭一

人的行为意愿&#xff0c;会受到措辞的影响 不直接说——揣摩对方心思——符合双方利益的措辞&#xff08;双赢思维&#xff09; 把NO变成YES的技巧&#xff1a; 1、“投其所好” 技能获得对方的好感&#xff0c;又能实现自己的期望 2、“儆其所恶” 能形成强大的强制力&am…

【C# 10 和 .NET 6】使用MVC模式构建网站(笔记1)

Building Websites Using the Model-View-Controller Pattern 使用模型-视图-控制器模式构建网站 本章介绍使用 Microsoft ASP.NET Core MVC 在服务器端构建具有现代 HTTP 架构的网站&#xff0c;包括构成 ASP.NET Core MVC 项目的启动配置、身份验证、授权、路由、请求和响应管…