热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搭建Appium自动化测试环境(IOS篇)

今天我们要讲的如何搭建一个Appium自动化测试环境,可以对IOS系统的App进行自动化测试。本文仅

今天我们要讲的如何搭建一个 Appium 自动化测试环境,可以对 IOS 系统的 App 进行自动化测试。

本文仅讲解在 Mac 上的环境配置方法。

配置 IOS 的自动化驱动环境

Appium 进行自动化的原理是:发送命令到各自系统对应的自动化驱动,来对相应的系统上的 App 进行自动化。这篇文章讲的是 IOS 自动化,对应驱动的名字叫 XCUITest。为了让驱动正常工作,我们要配置 XCUITest 的环境:

安装 XCode7 或更高版本

如果你的 Mac 已经安装 XCode,请忽略,否则去 App Store 里安装。

添加 udid 到 IOS 开发者账号上

让有 IOS 开发者账号的人(可能是你或着你的 IOS 开发同事)把被测试的 iPhone 的 udid (udid 的获取办法请 Google)添加到开发者账户上。IOS 开发者都知道,如果你不是 IOS 开发就找他们做这一步,这里就不再赘述。

安装开发者证书

让有 IOS 开发者账号的人(可能是你或着你的 IOS 开发同事)把证书文件给你,你把它们装在 Mac 上。

文件清单:

  • xxx.cer
  • xxx.p12
  • xxx.mobileprovision

三个文件都是双击安装,一路默认。

注意:

  • 安装 xxx.p12 文件时候,可能有密码,还是找有 IOS 开发者账号的人要密码。
  • 双击 xxx.mobileprovision 文件时候,没有什么界面,但是只要你的电脑上有 XCode,就已经安装好了。

安装 Homebrew

如果你的 Mac 已经有 Homebrew ,请忽略,否则执行此命令安装:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 Carthage

brew install carthage

安装 libimobiledevice

brew install libimobiledevice --HEAD

安装 ios-deploy

npm install -g ios-deploy

或者

brew install ios-deploy

至此,驱动环境就搭建好了!

安装 Appium

安装 Appium 有两种方式,NPM 和 桌面程序安装包,我们这次先选择前者:

npm install -g appium

配置 WebDriverAgent

打开 WebDriverAgent.xcodeproj:

open $(npm root -g)/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj

选择 WebDriverAgentRunner,并在下面两个 Signing 面板上选择之前安装的 provisioning 文件。

搭建 Appium 自动化测试环境(IOS 篇)

编写简单测试脚本

把 iPhone 插到 Mac 上。然后:

准备被测试的 App 的安装包

准备一份被测试 IOS App 文件,就是 ipa 结尾的安装包。

新建测试项目

mkdir appium-test

cd appium-test

npm i webdriverio

添加 test.js 文件,并填写以下内容:

// Javascript

const wdio = require("webdriverio");

const opts = {
  port: 4723,
  desiredCapabilities: {
    platformName: "IOS",
    deviceName: "iPhone的设备名称(Settings -> General -> About -> Name )",
    app: "填写 xxx.ipa 的本地路径",
    automationName: "XCUITest",
    udid: "iPhone 的 udid",
  }
};

const client = wdio.remote(opts);

client
  .init()
  .end();

在一个命令行中启动 appium:

appium

在另一个命令行中执行测试脚本:

node test.js

然后就会发现手机被安装了 xxx.ipa ,并打开了。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 探索Web 2.0新概念:Widget
    尽管你可能尚未注意到Widget,但正如几年前对RSS的陌生一样,这一概念正逐渐走入大众视野。据美国某权威杂志预测,2007年将是Widget年。本文将详细介绍Widget的定义、功能及其未来发展趋势。 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 题目《BZOJ2654: Tree》的时间限制为30秒,内存限制为512MB。该问题通过结合二分查找和Kruskal算法,提供了一种高效的优化解决方案。具体而言,利用二分查找缩小解的范围,再通过Kruskal算法构建最小生成树,从而在复杂度上实现了显著的优化。此方法不仅提高了算法的效率,还确保了在大规模数据集上的稳定性能。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 本文介绍了一种简化版的在线购物车系统,重点探讨了用户登录和购物流程的设计与实现。该系统通过优化界面交互和后端逻辑,提升了用户体验和操作便捷性。具体实现了用户注册、登录验证、商品浏览、加入购物车以及订单提交等功能,旨在为用户提供高效、流畅的购物体验。 ... [详细]
author-avatar
华东师大中北文艺部
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有