iOS自动化环境搭建(超详细)
1.macOS相关库安装
- libimobiledevice
> brew install libimobiledevice
使用本机与苹果iOS设备的服务进行通信的库。
- ideviceinstaller
brew install ideviceinstaller
获取设备udid、安装app、卸载app、获取bundleid
- carthage
> brew install carthage
第三方库管理工具。
- ios-deploy
> brew install ios-deploy
ios-deploy 不依赖于XCODE,进行安装和调试IOS应用程序。
- node & npm
> brew install node
> brew install npm
- appium-doctor
npm install -g appium-doctor
- 验证appium环境
> appium-doctor
info AppiumDoctor Appium Doctor v.1.11.0
info AppiumDoctor ### Diagnostic for necessary dependencies starting ###
info AppiumDoctor ✔ The Node.js binary was found at: /usr/local/bin/node
info AppiumDoctor ✔ Node version is 10.15.1
info AppiumDoctor ✔ Xcode is installed at: /Applications/Xcode-beta.app/Contents/Developer
info AppiumDoctor ✔ Xcode Command Line Tools are installed in: /Applications/Xcode-beta.app/Contents/Developer
info AppiumDoctor ✔ DevToolsSecurity is enabled.
info AppiumDoctor ✔ The Authorization DB is set up properly.
info AppiumDoctor ✔ Carthage was found at: /usr/local/bin/carthage. Installed version is: 0.33.0
info AppiumDoctor ✔ HOME is set to: /Users/tech
...
2.XCode
Xcode 是iOS开发环境,可以到app store 下载安装。

Xcode 的安装需要macOS升级到最新的版本,如果你的系统不是最新版本需要升级。

WebDriverAgent
在模拟器中运行的用于iOS的WebDriver服务器。
https://github.com/appium/WebDriverAgent
该项目由facebook开发,appium拉了个分支来维护,更新上超过了facebook,所以我们用appium的分支。
通过git clone 将项目克隆下来。
进入项目目录执行shell脚本:
../WebDriverAgent> ./Scripts/bootstrap.sh
- 通过xcode导入WebDriverAgent 项目

- 找到build Settings ---> packaging---> Product Bundle Identifier 选项。将值修改为唯一识别的字符串。

- Build Phases ---> Copy frameworks ---> 检查框架。
- RoutingHTTPServer.framework
- YYCache.framework

如果没有这两个框架,点击下方加号+添加。
3.iPhone
准备一台iPhone手机,通过数据线与PC进行连接。
1.选择连接的手机

2.菜单栏:product --> Scheme --> WebDriverAgentRunner

3.菜单栏:Product---> Test

4.在iPhone手机上打开设置:通用--> 描述文件与设备管理--> 开发者App ,设置Apple Development xxxxx 在此iPhone上受信任。

5.检查日志是否有错误。

4.iproxy
安装 usbmuxd,他自带了iproxy小工具,iproxy将设备上的端口映射到电脑上的某个端口。
> brew install usbmuxd
> iproxy 8100 8100
5.开始测试
终于可以开始测试了,你有几种选择。
我选 openatx/facebook-wda,因为它更加简单。
安装:
pip3 install -U facebook-wda
测试脚本:
import wda
c = wda.Client('http://localhost:8100')
print(c.status())
结果:
{'message': 'WebDriverAgent is ready to accept commands', 'state': 'success', 'os': {'name': 'iOS', 'version': '13.4', 'sdkVersion': '13.4'}, 'ios': {'simulatorVersion': '13.4', 'ip': '192.168.1.8'}, 'ready': True, 'build': {'time': 'Mar 28 2020 23:01:36', 'productBundleIdentifier': 'com.facebook.WebDriverAgentRunner'}, 'sessionId': 'F951380E-7219-4EA9-84FC-CC8BE78A12F8'}
好了,可以开始你的iOS自动化测试了。
iOS自动化环境搭建(超详细)的更多相关文章
- iOS自动化环境搭建——macaca
macaca-java for ios 自动化环境搭建 基础原理解析:https://testerhome.com/topics/6608 一.环境搭建 1.安装eclipse; -----Java开 ...
- Hibernate环境搭建超详细
前言 环境搭建其实可以简单到导入相关jar包即可. 但是对于学习来说,这个环境搭建的内容还是挺多的,目的是提供一个让我们如何快速学习和掌握类库的学习环境.作为程序猿,学习和使用类库是必须掌握的技能.如 ...
- Appium环境搭建超详细教程
前言: 本系列教程会从软件的基本安装开始,最终目的是通过完成几个案例后, 大家实现自由抓取App中想要的资源. 本系列以后会更的: Appium基本使用及控制真机及安卓模拟器 Mitmproxy抓包工 ...
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
- appium ios真机自动化环境搭建&运行(送源码)
appium ios真机自动化环境搭建&运行(送源码) 原创: f i n 测试开发社区 6天前 Appium测试环境的搭建相对比较烦琐,不少初学者在此走过不少弯路 首先是熟悉Mac的使用 ...
- 手机APP自动化环境搭建
1 摘要 近年来,随着移动应用从数量上和逻辑复杂程度上的增长,以及产品发布周期的紧缩,使得回归测试迫在眉睫,鉴于此APP自动化测试变得越来流行,当前主流的APP自动化工具有:Appium.Roboti ...
- MAC自动化环境搭建
UI自动化环境搭建 第一阶段:配置appium环境硬件配置mac系统电脑 java环境sunjiedeMacBook-Air:~ vicent$ java -versionjava version & ...
- Java自动化环境搭建笔记(2)
Java自动化环境搭建笔记(2) 自动化测试 在笔记一中已经完成了一键构建项目.xml指定规划测试集.数据解耦与allure报告生成的开发.接下来便是: 浏览器驱动通过配置启动 页面元素定位解耦,通过 ...
- 基于python的App UI自动化环境搭建
Android端Ui 自动化环境搭建 一,安装JDK.SDK 二,添加环境变量 Widows:1.系统变量→新建 JAVA_HOME 变量E:\Java\jdk1.7.0 jdk安装目录 2.系统变量 ...
随机推荐
- 线程sleep,wait,notify,join,yield方法解析
线程的五种状态 线程从创建到销毁一般分为五种状态,如下图: 1) 新建 当用new关键字创建一个线程时,就是新建状态. 2) 就绪 调用了 start 方法之后,线程就进入了就绪阶段.此时,线程不会立 ...
- Java中如何更优雅的处理空值
经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系.但它会让你很头疼.有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务 ...
- java线程间的协作
本次内容主要讲等待/通知机制以及用等待/通知机制手写一个数据库连接池. 1.为什么线程之间需要协作 线程之间相互配合,完成某项工作,比如:一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行 ...
- java 发送邮件详细讲解
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...
- 基于正向扫描的并行区间连接平面扫描算法(IEEE论文)
作者: Panagiotis Bouros ∗Department of Computer ScienceAarhus University, Denmarkpbour@cs.au.dkNikos M ...
- JAVA设计模式之-模板方法+(钩子函数)
1.定义 允许子类对父类的一个或多个步骤进行重写.例如聚合支付场景中有很多共同的步骤,比如验签.四要素验证.风控等等,但是在支付的时候走不同的渠道可能在调用和参数上有很大的不同,比如有的是xml,有的 ...
- 我要打十个!详解建造者模式(builder pattern)
前言 "我要打十个",其实是我要打十个野怪! 这十个野怪呢,它们有不同的技能.装备和武器,长得也不一样.这里野怪是一个蛮复杂的对象,由各个不同的部分组成(技能.装备.武器等),不同 ...
- Element UI中的上传文件功能
上传文件给后台: <el-upload style="display:inline-block" :limit=" class="upload-demo& ...
- vim不能使用小键盘
使用终端登录Linux后使用vim编辑文本,这时在默认设置下载插入模式使用小键盘会插入一些非数字的字符. 更改的方法: 在终端设置中选择终端类型为linux
- mybatis探究之延迟加载和缓存
mybatis探究之延迟加载和缓存 一.什么是延迟加载 1.延迟加载的概念 在mybatis进行多表查询时,并非所有的查询都需要立即进行.例如在查询带有账户信息的用户信息时,我们们并不需要总是在加载用 ...
