Mac搭建Airtest iOS自动化测试环境
Mac搭建Airtest iOS自动化测试环境
1.硬件准备
一台Mac电脑
一台iPhone手机
2.Mac电脑安装Xcode
在App store搜索Xcode,点击下载安装。
PS:连一个给力的WIFI,Xcode安装包大约11G左右。我安装的是Xcode12.3。
3.运行iOS-Tagent
iOS-Tagent 是基于 WebDriverAgent 项目上进行开发的,可以在手机上创建一个WebDriver服务器,可用于远程控制iOS设备,定位UI元素。
3.1 下载iOS-Tagent到本地电脑
git clone https://github.com/AirtestProject/IOS-Tagent
注意:该项目存在github中,如果使用SSH方式clone,可能会提示权限不够,可以使用https方式下载。
3.2 使用Xcode 打开iOS-Tagent,用数据线连接iPhone至Mac
连接iPhone后,在iPhone设备上会弹出“是否信任Mac设备”,选择信任
使用Xcode 选择项目,打开WebDriverAgent.xcodeproj
在菜单栏选择项目:
product
->Scheme
->WebDriverAgentRunner
在菜单栏选择设备:
product
->Destination
-> 选择你的真机
3.3 使用苹果账号或苹果开发者账号,登录Xcode,并注册真机设备
左侧导航栏,选择
WebDriverAgentRunner
->TARGETS
->WebDriverAgentRunner
->Signing & Capabilities
->Team
选择
Team
->Add an Account
-> 登录苹果账号(个人免费或开发者账号)可以使用公司的开发者账号,需要管理员把自己的Apple ID加到group中。
选择
TARGETS
->WebDriverAgentRunner
->Build Settings
->Basic
双击
Product Bundle Identifier
值,填写一个属于自己独一无二的字串(随便填,不重复就行)回到,上文提过的
Signing & Capabilities
界面,查看有无报错无报错,则继续;若有报错,查看 登陆开发者账号
3.4 启动Test
在菜单栏
product
->Test
,当你看到以下日志的时候,代表 iOS-Tagent 已经启动成功了过程中,Xcode可能会请求密码权限或其他权限 —> 全部允许 —> 不要拒绝,拒绝可能会带来奇妙的异常
日志如下:
- 此时手机上生成一个WDA应用包:
4.设置代理
iproxy 可以把iPhone端口映射到电脑端口,那么就可以通过访问电脑的端口访问到手机的端口了。
一般情况下,需要通过设置usb代理的方式访问手机上的Agent,直接通过wifi对手机进行访问可能会出现问题,具体的原因可以参考 Issues 和 detail。
4.1 通过 Homebrew 安装iproxy
$ brew install libimobiledevice --HEAD
如果未安装homebrew,可以通过以下命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
4.2 运行iproxy
$ iproxy 8100 8100
启动成功后,可以试着在浏览器访问 http://127.0.0.1:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。
5.Airtest IDE
5.1 下载最新版本Airtest
5.2 使用Airtest连接iPhone
- 在AirtestIDE的iOS地址栏填入地址 http://127.0.0.1:8100 ,点击 “connect” 连接设备,开始编写你的Airtest测试脚本
通过ip方式连接iPhone,实时刷新界面,可进行UI测试。
Q&A
1.Xcode与Mac OS版本不匹配,App store无法安装Xcode。
**原因:**目前Xcode最新版本是12.3,要求Mac OS系统至少是10.15。
**解决:**先升级Mac OS系统,再使用。
**注意:**如果不升级Mac OS,去网上下载Xcode安装包,可能会因为不是Mac系统应用而无法安装。如果有苹果开发者账号,可以参考这篇文章安装旧版本。
2.Xcode 12.3编译iOS-Tagent报错Building for iOS Simulator , was built for iOS+iOS Simulator
**问题:**运行iOS-Tagent构建失败
**原因:**引用的第三方库是 build for iOS +iOS Simulator 的,不是build for iOS Simulator
**解决方法:**修改当前工程的Workspaces Setting,可以将工程的Build System修改成Legacy Build System。编译可以编译成功。
3.Xcode12.3,iOS14 iPhone运行出错
**问题:**运行iOS-Tagent出错,报错信息:terminating with uncaught exception of type NSException,Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘+[XCTestDriver sharedTestDriver]: unrecognized selector sent to class 0x10131aed8’
**原因:**iOS14没有+[XCTestDriver sharedTestDriver]
方法,WebDriverAgent 源代码中,在FBXCTestDaemonsProxy
类testRunnerProxy
方法里面,初始化了proxy
对象导致崩溃,因此改掉不需要的初始化判断。
**解决方法:**在原项目的基础上,新建2个文件,FBXCTestDaemonsProxy+Hook.h和FBXCTestDaemonsProxy+Hook.m,内容如下:
//
// FBXCTestDaemonsProxy+Hook.h
// WebDriverAgentRunner
//
// Created by ek on 2021/1/9.
// Copyright © 2021 Facebook. All rights reserved.
//#import <Foundation/Foundation.h>
#import <objc/runtime.h>@interface XCTRunnerDaemonSession : NSObject+ (instancetype)sharedSession;
@property(readonly) id daemonProxy;@end@interface FBXCTestDaemonsProxy : NSObject
+ (id)testRunnerProxy;
@end
//
// FBXCTestDaemonsProxy+Hook.m
// WebDriverAgentRunner
//
// Created by ek on 2021/1/9.
// Copyright © 2021 Facebook. All rights reserved.
//#import "FBXCTestDaemonsProxy+Hook.h"
#import <objc/runtime.h>@implementation FBXCTestDaemonsProxy (Hook)
+ (void)load {// load something[self swizzleClassMethod:objc_getClass("FBXCTestDaemonsProxy") orgSel:NSSelectorFromString(@"testRunnerProxy") swizzSel:NSSelectorFromString(@"hy_testRunnerProxy")];
}+ (id)hy_testRunnerProxy {static id proxy = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{Class runnerClass = objc_lookUpClass("XCTRunnerDaemonSession");proxy = ((XCTRunnerDaemonSession *)[runnerClass sharedSession]).daemonProxy;});NSAssert(proxy != NULL, @"Could not determin testRunnerProxy", proxy);return proxy;
}+ (BOOL)swizzleClassMethod:(Class)class orgSel:(SEL)origSel swizzSel:(SEL)altSel {Method origMethod = class_getClassMethod(class, origSel);Method altMethod = class_getClassMethod(class, altSel);if (!origMethod || !altMethod) {return NO;}BOOL didAddMethod = class_addMethod(object_getClass(class),origSel,method_getImplementation(altMethod),method_getTypeEncoding(altMethod));if (didAddMethod) {class_replaceMethod(class,altSel,method_getImplementation(origMethod),method_getTypeEncoding(origMethod));} else {method_exchangeImplementations(origMethod, altMethod);}return YES;
}
@end
文件位置如下:
**参考官方文档:**https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/README_zh.md
Mac搭建Airtest iOS自动化测试环境相关推荐
- iOS自动化测试环境搭建总结
1.关于iOS真机和模拟器自动化环境搭建 参考博文: Appium+Python3+iOS真机环境搭建 iOS自动化测试:mac下iOS10 appium测试环境的搭建 IOS + Appium自动化 ...
- 最新出炉--IOS自动化测试环境搭建(Python Java)
一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.Appium ...
- iOS自动化测试环境搭建
1 环境准备 1.1 Mac os x 1.2 brew Mac os x的包管理工具,安装方法:终端输入: /usr/bin/ruby -e "$(curl -fsSL https://r ...
- mac 搭建python+selenium+chromedriver环境
mac 搭建python+selenium+chromedriver环境 有关配置默认python3,请查看:https://blog.csdn.net/qq_35098526/article/det ...
- iOS自动化测试-环境搭建
应用场景 想要进行iOS自动化测试,必须进行环境的搭建 需要的环境 macOS系统电脑 Xcode 待测试的iOS项目 appium Desktop python pycharm Download P ...
- Robot + Appium 搭建 iOS 自动化测试环境
一.iOS安装条件 需要建立设定的移动平台运行APPium测试.如以下的平台信息: Mac OS 10.12.6 Xcode 9 Apple开发工具(IPhone simulator SDK,co ...
- android和ios测试环境搭建,iOS自动化测试环境搭建
macOS相关库安装 * libimobiledevice brew install libimobiledevice 使用本机与iOS设备的服务进行通信的库. * ideviceinstaller ...
- win10搭建android monkeyrunner自动化测试环境
本文记录一下monkeyrunner环境搭建遇到的各种坑,以免以后再次踩坑.首先要提一下巨坑,务必要安装java 8(本文记录于2023.3),安装其他版本java,运行monneyrunner会有很 ...
- mac搭建大数据开发环境
mac安装Hadoop/hbase/spark:https://blog.csdn.net/sunxiaoju/article/details/86183405 mac idea+sbt运行spark ...
- 全网最全appium工作原理以及appium自动化测试环境搭建教程
目录:导读 一.前言 二.Appium简介 三.搭建Appium+Python自动化测试环境 1.安装JDK并配置JDK的环境变量. 2.安装SDK并配置SDK的环境变量. 3.安装夜神模拟器并在模拟 ...
最新文章
- 独家 | 综述:情感树库上语义组合的递归深层模型
- linux下使用rpm安装libxml2,gcc,gcc-c++等基本包
- [转]Linux awk 命令 说明
- Android --- Retrofit 之 Okhttp3 网络请求总是调用 onFailure 方法,而不调用 onResponse,报错 timeout。
- QML基础类型之vector3d
- 利用 fdisk进行分区
- oracle转成整型_Oracle中如何用SQL把字符串转换成整型
- python编程软件哪个好-python IDE有哪些?哪个好用?
- (十八)密度聚类DBSCAN
- 2020年互联网大厂中秋礼盒PK!看看你的礼盒怎么样
- OpenGL.Superbible.7th.Edition(openGL超级宝典第七版)随书例子运行
- Java菜鸟教程怎么用_菜鸟教程 Java 学习笔记 (基础教程)
- 各地少先队深入开展红领巾心向党主题教育-少先队-红领巾心向党-主题教育
- 优秀的项目经理都会用这60个项目管理工具模板,可直接编辑套用
- 对bootstrop中左右浮动设置
- 项目一众筹网01_00_项目简介_此项目是SSM过渡到分布式项目(SpringBoot、SpringCloud)、互联网的发展引领了技术的发展、瀑布模型、敏捷开发是什么意思
- 木马 + 流氓软件 + 垃圾软件 玩死 Win 2000 pro~
- Rokid Pebble若琪月石AI音响支持root
- PROGRESSIVE GROWING OF GANS FOR IMPROVED QUALITY, STABILITY, AND VARIATION
- C++中常用函数总结(头文件)