appium ios真机自动化环境搭建运行(送源码)
appium ios真机自动化环境搭建&运行(送源码)
目录:导读
(1)安装JDK,并配置环境变量,方法如下:
(2)安装Xcode、Xcode commandline tools和iOS模拟器
(3)安装Homebrew
(4)安装indeviceinstaller
(5)安装Appium服务端Node.js
(6)安装Appium客户端
(7)用npm安装wd
(8)安装SourceTree、Git 或SVN,然后取开发的App源代码
(9)申请开发者调试证书
(10)安装Eclipse
(11)安装Ant,并设置环境变量
(12)Appium客户端界面的配置
iOS自动化测试运行
iOS的App自动化测试demo演示视频
Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路
首先是熟悉Mac的使用习惯:命令行是Linux风格,界面则类似于Windows风格。
(1)安装JDK,并配置环境变量,方法如下:
sudo vi /etc/profile 在最后行加入如下内容:
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/"
CLASS_PATH="$JAVA_HOME/lib"
PATH=".:$PATH:$JAVA_HOME/bin"
保存退出后,执行生效,输入命令Source ~/.bash_profile
输入命令java –version, 环境安装后成功显示如下所示:
(2)安装Xcode、Xcode commandline tools和iOS模拟器
在App Store中下载 xcode.dmg并安装 。注意,要0与 Mac的 OS X版本对应。由于App源代码是在Xcode开发环境中开发出来的,因此我们需要在Xcode里调试源码成功运行,并启动所要测试的App,源码的导入和调试可以找iOS开发负责人帮忙搞定,模拟器安装如图3.1所示。
▲图3.1
(3)安装Homebrew
curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local--strip 1
brew –v 显示如下所示:
(4)安装indeviceinstaller
brew install indeviceinstaller
ideviceinstaller –h 显示如下所示:
(5)安装Appium服务端Node.js
brew install node
node –v 显示如下所示:
(6)安装Appium客户端
将双击安装包appium.dmg,或将它拖动到Applications文件夹即完成安装。设置Appium环境变量,将appium.js和appium-doctor.js文件所在路径配置到PATH环境变量设置参考,如图3.2所示。
▲图3.2
打开Appium客户端,如图3.3所示。
▲图3.3
(7)用npm安装wd
npm install wd
(8)安装SourceTree、Git 或SVN,然后取开发的App源代码
clonessh://zouhui@XXX.XXXXX.com:30020/mnt/repo/app
git 用户名密码 :zouhui/3ihU88uy*** 版本管理取源码,输入用户名密码
ssh://zouh@dbs.e.com:30020/mnt/repo/ev**_ App 版本管理取源码路径
(9)申请开发者调试证书
因为开发者证书苹果是要收费的,所以需要给iOS团队开发的负责人在后端平台工具申请自动化测试需要开发的源码和调试权限,大家可向公司的iOS开发负责人提出申请,提供手机UDID:3c22f4c14660eda7d3051636ae659b6b998af8db;
然后iOS开发负责人会提供:iOS的App源代码、调试证书、开通手机UDID调试权限。
建议让iOS开发负责人直接安装好调试证书,因为证书安装比较麻烦,有时很容易出错,所以请开发人员安装可以很快解决。
也可以先在模拟器上运行,但是一般真实测试过程中都是在真机上运行。
(10)安装Eclipse
(11)安装Ant,并设置环境变量
sudo
chmod +w /etc/bashrc
export ANT_HOME=/usr/local/apache-ant-1.9.3
export PATH=${PATH}:${ANT_HOME}/bin
(12)Appium客户端界面的配置
真机测试时需要设置以下4个必填项:
1)BundleID:待测试App的package名称, 如com.test.buy。
2)Force Device:iPhone手机设备, 如iPhone 6。
3)Platform Version:iOS版本号, 如9.3。
4)UDID:手机设备唯一ID,如3c22f4c14660eda7d3051636ae659b6b998af7dc。
如图3.4所示。
▲图3.4
Appium中Xcode默认Path设置如图3.5所示。
Appium中的环境配置检查Doctor,打勾表示正常,如图3.6所示。
▲图3.6
Appium中的Inspector工具,可以帮助我们快速定位元素,通常也是通过name和XPath等方式。
Appium中,Launch用来启动停止操作,启动成功时如图3.8所示。
▲图3.8
单击图标,弹出Inspector,进行控件元素的获取,查找元素的XPath、name等,如图3.9所示。
▲图3.9
iOS自动化测试运行
(1) iPhone手机开启运行自动化 ,单击设置—>开发者—>EnableUI Automation —>yes。
将手机连接到电脑上,并且使Xcode能识别到该手机。
(2) 单击Launch按钮,启动 Appium,无错误日志。
(3) 在Eclipse中运行已经写好的测试代码(详细请看第4章),可看到在Appium客户端中有自动化数据和日志详细信息输出,手机上可以看到看到App自动化测试用例已开始在运行。
(4) 查看测试结果。
iOS的App自动化测试demo演示视频
登录账号:7980068@qq.com
登录密码:*******
http://www.iqiyi.com/w_19rsoh2gip.html#vfrm=2-3-0-1
http://v.youku.com/v_show/id_XMTY2MzU4OTk5Ng==.html
App 自动化测试框架 demo 源码链接:https://pan.baidu.com/s/1bEwMh4 密码:g7pk
写在最后
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~
你也可以加入下方的的群聊去和同行大神交流切磋
相关文章:

appium ios真机自动化环境搭建运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 目录:导读 (1)安装JDK,并配置环境变量,方法如下: (2)安装Xcode、Xcode commandline tools和iOS模拟器 &…...

米尔基于ARM嵌入式核心板的电池管理系统(BMS)
BMS全称是Battery Management System,电池管理系统。它是配合监控储能电池状态的设备,主要就是为了智能化管理及维护各个电池单元,防止电池出现过充电和过放电,延长电池的使用寿命,监控电池的状态。 图片摘自网络 电池…...

Java后端项目IDEA配置代码规范检查,使用checkStyle实现
最近的Java后端项目想实现代码的规范检查,调研了一圈,终于找到了简单的方式实现:以下是常见的几种方案: 1、在客户端做 git hook,主要是用 pre-commit 这个钩子。前端项目中常见的 husky 就是基于此实现的。但缺点也很…...

Nginx_4
Nginx负载均衡 负载均衡概述 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的性能及单点故障问题就凸显出来了,…...

linux Ubuntu KUbuntu 系统安装相关
系统安装 本来想快到中午的时候调试一下服务器上的http请求接收代码。我的电脑上装的是kali的U盘系统,然后我的U盘居然找不到了(然后之前安装的系统不知道是否是写入软件的原因,没办法解析DNS,我都用的转发的,这让我体验非常差。kali的系统工具很多&…...

个人信息保护认证
个人信息保护认证是证明个人信息处理者在认证范围内开展的个人信息收集、存储、使用、加工、传输、提供、公开、删除以及跨境等处理活动符合认证依据标准要求。适用范围 本规则依据《中华人民共和国认证认可条例》制定,规定了对个人信息处理者开展个人信息收集、存储…...
Negative Prompt in Stable Diffusion
必读链接:https://www.reddit.com/r/StableDiffusion/comments/z7salo/with_the_right_prompt_stable_diffusion_20_can_do/ A lot of people have noticed that Negative Prompt works wonders in 2.0, and works even better in 2.1. Negative hints are the op…...

MLX90316KGO-BDG-100-RE传感器 旋转位置 角度测量
介绍MLX90316是Tria⊗is旋转位置传感器,提供在设备表面旋转的小偶极磁铁(轴端磁铁)的绝对角位置。得益于其表面的集成磁集中器(IMC),单片设备以非接触式方式感知应用磁通量密度的水平分量。这种独特的传感原理应用于旋转位置传感器,可在机械(…...

Reflections反射包在springboot jar环境下扫描不到class排查过程
需求: 要实现指定pkg(如com.qiqitrue.test.pojo)扫描包下所有class类信息:使用代码如下 使用的版本:0.10.2(截至目前是最新版)发现只能在idea编译期间可以获取得到(也就是在开发阶段…...

黑马】后台项目171集
将近一个月没有练习了,找到之后果然打不开出了问题【问题】运行代码打开网页后,发现不能正常登录,一开始还以为是密码记错了,后来发现是数据库没有正常启动,phpstudy中的数据库一直是启动状态,关闭不了。【…...

Qt 5 架构和特点
Qt 5 模块构架: 模块:功能:Qt CoreQt 5 的核心类库,每个模块都建立在Core上Qt GUI图形用户界面开发的最基础的类库Qt Widgets提供c用户界面部件(是对Qt GUI的拓展)Qt SQL对数据库进行操作Qt Multimedia、…...
转换符说明使用方法(在printf函数中)
目录 一些常见的转换说明及打印结果: printf()的转换说明修饰符 printf()函数打印数据指令时要与代打印数据的类型相匹配才行。 如%d %c %ld......这些符号叫做转换说明。代表着数据转化成显示的形式。 一些常见的…...
针灸-基本任脉督脉
这里写自定义目录标题 丈量 同身丈下针深浅一般入穴的方法成人 幼儿 不同入穴方式现代常用针概念十二经 纳天干**天干**地支表里关系筋络任脉中脘穴:梅花灸巨阙穴廉泉穴督脉长强腰俞命门阳关悬枢脊中筋缩眼诊 癫痫至阳消渴...

信息系统与信息化
1.1 信息系统与信息化 1.1.1 信息的基本概念 信息质量属性(掌握)信息传输模型 1.1.2 信息系统的基本概念1.1.3 信息化的基本概念 信息化的五个层次信息化基本内涵信息化的基本概念(了解)六要素关系图(掌握) 1.1.4 信息系统生命周…...

解决axios异步请求问题(异步变为同步)
遇到的问题 在目前一个需求中,我需要等待axios请求完成后,判断请求是否出现异常,然后来判断是否关闭弹窗 修改后大概代码如下: async submitForm() {let flag false//表单验证,默认通过let formValidation truethis…...

【Django】云笔记项目
一、介绍 用户可在系统中记录自己的笔记,用户的数据被存储在云笔记平台;用户和用户之间的数据为隔离存储(登陆后才能使用相关笔记功能,且只能查阅自己的笔记) 二、功能拆解 1、用户模块 注册:成为平台…...

LeetCode——1797. 设计一个验证系统
一、题目 你需要设计一个包含验证码的验证系统。每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。如果验证码被更新了,那么它会在 currentTime (可能与之前的 currentTime 不同&am…...

java Resource
参看本文前 你要先了解 spring中的 Autowired和Qualifier 注解 如果之前没有接触过 可以查看我的文章 java spring 根据注解方式按(类型/名称)注入Bean 然后 创建一个java项目 引入spring注解方式 所需要的包 然后 在src下创建包 我们这里直接叫 Bean 在Bean下创建包 叫UserD…...

ArkTS语法(声明式UI)
页面级变量的状态管理 装饰器装饰内容说明State基本数据类型,类,数组修饰的状态数据被修改时会触发组件的build方法进行UI界面更新。Prop基本数据类型修改后的状态数据用于在父组件和子组件之间建立单向数据依赖关系。修改父组件关联数据时,…...

自动化测试实战篇(7)jmeter连接mysql数据库,实现单表、多表、三表查询,并对表中数据进行修改,删除,新增操作
Jmeter也可以连接mysql数据库,通过JDBC去调用数据库内的参数到HTTP请求中进行接口测试,可以说是相当方便 自动化测试实战篇(7)jmeter连接mysql数据库,实现单表、多表、三表查询,并对表中数据进行修改&#…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...