iOS客户端自动化UI自动化airtest+appium从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图

news/2024/5/14 23:39:26

Android客户端自动化UI自动化airtest从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图-CSDN博客

避坑系列-必读:

不要安装iOS-Tagent ,安装appium -这2个性质其实是差不多的都是为了安装wda。注意安装appium最新版本,安装完,git下载最新版本的wda(v8.1.0版本-source压缩包解压,代码替换原git下载的wda文件夹下的全部文件 否则各种源码语法报错

一、基础环境

1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败

下载.dmg文件 

苹果电脑 | macOS | jdk1.8 | 环境变量配置_jdk1.8 mac-CSDN博客

Java Downloads | Oracle

jdk环境变量配置

找到java home

qa@mac ~ % cd /Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

qa@mac ~ % vim .bash_profile

配置内容如下:

#JAVA

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

PATH=$JAVA_HOME/bin:$PATH:.

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

export JAVA_HOME

export PATH

export CLASSPATH

qa@mac ~ % source ~/.bash_profile  刷新配置文件

qa@mac ~ % java -version       

如果安装了多个jdk 则删除 

sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-22.jdk/Contents/Home 

$JAVA_HOME   显示

/Library/Java/JavaVirtualMachines/jdk-1.8.jdk/Contents/Home

2. 下载airiest

Airtest Project

3. 下载appium

https://github.com/appium/appium-desktop/releases

下载 Appium-Server-GUI-mac-1.22.3-4.dmg

4. MAC修改终端左侧显示的用户名

sudo scutil --set HostName Tmp

Tmp 就是你要修改的名字, 比如, 你要改成abc, 那么 执行下面的命令

sudo scutil --set HostName mac 

重启终端生效

5. 下载xcode 

打开App Store搜索xcode

6. 安装homebrew

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

下载源选择阿里巴巴

MAC安装brew保姆级教程_mac brew-CSDN博客

7. 安装python3.6.8,版本太高会导致airtest安装失败,下载地址:https://www.python.org/downloads/release/python-368/

我安装的Python Releases for macOS | Python.org 3.9.0版本

添加环境变量,执行open ~/.bash_profile,加入

     alias python="/python安装路径/python3.6"
     alias pip="/python安装路径/pip3.6"

     保存后执行source ~/.bash_profile && python -V && pip -V检测安装版本是否成功

如遇:排除错误 pip Command Not Found
1. 检查是否安装了pip

在Mac和Linux上,您可以使用以下命令检查是否安装了pip

python3 -m pip --version 
如果pip安装正确,输出如下

pip 24.0 from /Users/qa/Library/Python/3.9/lib/python/site-packages/pip (python 3.9)

如果未安装pip,您可以按照此处相应操作系统的安装步骤进行操作

2. 将pip升级到最新版本

如果pip仍然不工作,请尝试将pip升级到最新版本:

python3 -m pip install --upgrade pip

8. 安装OpenCV:执行pip3 install opencv-contrib-python

9. 安装poco:执行pip3 install pocoui

10. 下载carthage

brew install carthage


二、iOS端环境配置

参考资料:iOS真机安装WebDriverAgent图文详解-腾讯云开发者社区-腾讯云

1. 安装iOS-Tagent

git仓库下载代码

git clone https://github.com/AirtestProject/iOS-Tagent.git 

下载上面的代码后,找到WebDriverAgent.xcodeproj这个文件,各版本位置可能会不一样,如果我提供的路径找不到,可以搜索下文件。/Users/qa/Desktop/2024/code/iOS-Tagent

2. 打开项目后,更改红框中两个文件的相关信息,team可以使用个人苹果id账号,Bundle identifier需要更改一下,不重复就可以了,我是直接在后面加点后缀

3. 如果是个人免费版的证书,还需要修改下WebDriverAgent的BundleID,随便加后缀,不要跟别人重复就好,这里建议可以加当前时间戳,比如:202106290903,如果是付费版开发者证书则不需要这步操作。

4. 模拟器-更改完成后,手机用数据连接电脑

点击xcode顶部工具栏的product——Destination,点击自己的手机设备

如遇提升下载iOS17.4 则下载 更新成功后(8个G左右),正常

5. IntegrateApp选择机型 点击Product-Run 出现如图模拟器界面

6. 真机-用数据线连接iPhone至Mac

选择项目,在菜单栏 product -> Scheme -> WebDriverAgentRunner

选择设备,在菜单栏 product -> Destination -> 选择你的真机

启动Test,在菜单栏 product -> Test

7. 各种报错分析:如遇buildFailed 第54行报错

报错信息如下:Parameter of overriding method should be annotated with __attribute__((noescape))

解决办法:在参数前加 __attribute__((noescape))

修改前- (void)measureBlock:(CDUnknownBlockType)arg1;  

修改后- (void)measureBlock:(CDUnknownBlockType)__attribute__((noescape))arg1;  

参考https://www.jianshu.com/p/c536c3b81ac2

8. 再次执行product -> Test 弹框报错

Previous preparation error: Developer Mode disabled. To use 越狱兔的iPhone12 for development, enable Developer Mode in Settings → Privacy & Security.

解决办法:IOS开发之——Developer Mode DIsabled-CSDN博客

原因:iPhone设备开发者模式已关闭
打开iPhone的设置,搜索隐私与安全性-安全性-开发者模式 默认为关闭 打开

将开发者模式打开后,设备重启

重启设备后,输入密码开启,查看开发者模式是否打开

如遇The request to open "com.facebook.WebDriverAgentRunner20240401yutu.xctrunner" failed.

去iPhone -VPN与设备管理-信任证书

Xcode中设备恢复正常状态,再次执行product -> Test 弹框报错

iPhone端出现白色文字Automation Running  Hold both  volume buttons to stop

xcode控制台出现日志:

Test Case '-[UITestingUITests testRunner]' started.

    t =     0.00s Start Test at 2024-03-27 15:04:36.614

    t =     0.00s Set Up

ServerURLHere->http://169.254.168.151:8100<-ServerURLHere

每次build iPhone端会自动安装WebDriverAgent

9. 各种报错分析-Thread 1: "-[__NSXPCInterfaceProxy_XCTMessagingChannel_RunnerToDaemon _XCT_exchangeProtocolVersion:reply:]: unrecognized selector sent to instance 0x28146df90"

无解 看起来是源码的问题。。。。。。

参考资料(一)app自动化测试环境搭建(mac+ios+airtest )_automation running-CSDN博客

换一种方式安装appium

10. 安装appium 安装最新版本

Releases · appium/appium-desktop · GitHub

安装打开appium

11. 打开appium-webdriveragent 我的路径如图

/Applications/Appium Server GUI.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent

双击打开WebDriverAgent.xcodeproj

在xcode配置 更改红框中两个文件的相关信息,team可以使用个人苹果id账号,Bundle identifier需要更改一下,不重复就可以了,我是直接在后面加点后缀2024yutu

12. 连接iPhone手机重复步骤678

开启UI Automation,位置在:iPhone手机-设置-开发者-启用UI自动化

13. 安装appium:npm install -g appium

如果有问题那也需要安装 appium docker

安装完毕运行appium

默认端口为4723

在浏览器/airtest输入网页:http://127.0.0.1:4723/status

14. 如遇xcode build失败

解决办法-20240327亲测有效 

[IOS自动化]Xcode build时报错: Cannot link directly with dylib/framework_cannot link directly with dylib/framework, your bi-CSDN博客

解决办法如下:

a. 如果你的appium版本是最新的,直接跳到第3步

否则卸载appium desktop(finder/application里找到app后直接拖到垃圾桶)

b. 下载安装最新的appium desktop: Releases · appium/appium-desktop · GitHub

c. finder/application里找到最新安装的appium app, 右击选择show package contents,定位到WebDriverAgent.xcodeproj所在路径:

参考:/Applications/Appium Server GUI.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent

d. 下载最新的WedDriverAgent: ​​​​​​Releases · appium/WebDriverAgent · GitHub

下载Source.code即可

把下载好的WedDriverAgent里的全部内容替换到第三步的路径下(原内容可全部删除)

替换

e. 文件夹双击WebDriverAgent.xcodeproj, xcode自动打开。build成功

iPhone安装完WebDriverAgentRunner-Runner后 在VPN与设备管理信任开发者APP 每次test(build)iPhone都会重新安装wda

15. 通过 Homebrew 安装iproxy

brew install libimobiledevice

16. 运行iproxy

iproxy 8100 8100

启动成功后,可以试着在浏览器访问 http://127.0.0.1:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功 如果返回为空,可能是因为未安装appium导致的(暂不确定)

启动AirTestIDE,devices-iOS APP Connection处填写 http://127.0.0.1:8100 或者启动appium后填写http://127.0.0.1:4723/status 均可。点击connect

连接成功后AirTest Assistant处点击录制即可针对操作进行脚本录制

17. 如果更换iPhone设备或者断开连接 重新连接手机后需要先启动xcode 

18. 如遇报错 xcode Exiting due to IDE disconnection. 重启iPhone 重启xcode再次test iPhone输入密码即可 Product-Test成功后,iPhone显示界面如下

19. 安装appium-inspector。 git官网下载最新包

打开Appium Server GUI 点击搜索按钮 跳转到Appium inspector的git官网GitHub - appium/appium-inspector: A GUI inspector for mobile apps and more, powered by a (separately installed) Appium server

下载appium-inspector安装包

Releases · appium/appium-inspector · GitHub


                        

参考资料

APP自动化之airtest(一)---环境搭建mac版&安卓真机连接_mac可以跑android手机机进行airtest测试吗-CSDN博客

APP自动化之airtest(二)---ios真机调试_ios-tagent真机调试-CSDN博客

https://blog.51cto.com/u_16213625/8154325


http://www.mrgr.cn/p/42266364

相关文章

计算机复试面试问答准备(未完)

目录 1、理解多态性2、怎么逆置⼀个链表3、顺序表和链表的区别4、树的存储结构5、什么是哈夫曼树&#xff1f;简述哈夫曼树的构造过程。介绍哈夫曼树的特性。6、哈夫曼编码的编码和解码过程7、图的遍历方式8、图的存储方式9、最小生成树10、迪杰斯特拉算法11、佛洛依德算法12、…

逆向中常见的加密算法

逆向中常见的加密算法 1.Base64 1) 原理与特征: ​ a.原理:将3个byte(即38=24bit)切割为46,然后根据6bit表示的数字在base64表(64byte的表)寻找对应的值;如果待加密字符串长度不为3的整数,则在末尾处补0对齐,其中0对应的字符为=。 ​ b.特征:在反汇编代码中会出现0x…

Flutter逆向

环境配置(Blutter)及使用 参考 [原创]flutter逆向 ACTF native app-Android安全-看雪-安全社区|安全招聘|kanxue.com 其中在编译过程中遇到 -- Configuring done (2.5s) -- Generating done (0.0s) -- Build files have been written to: E:/blutter/build/blutter_dartvm3.4…

创新指南|如何将人工智能应用于未来的创新管理——并不断付诸实践

ChatGPT 的推出加剧了围绕人工智能的炒作&#xff0c;现在我们看到了前所未有的巨大进展。对于我们这些热衷于创新的人来说&#xff0c;这是一个激动人心的时刻。他们正在共同采取措施&#xff0c;充分利用人工智能进行创新管理。本文将阐述人工智能能为创新管理做什么&#xf…

文件包含一-WEB攻防-PHP应用文件包含LFIRFI伪协议编码算法无文件利用黑白盒

演示案例&#xff1a; 文件包含-原理&分类&利用&修复黑盒利用-VULWEB-有无包含文件白盒利用-CTFSHOW-伪协议玩法 #文件包含-原理&分类&利用&修复 1、原理 程序开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff0c…

docker 的八大技术架构(图解)

docker 的八大技术架构 单机架构 概念&#xff1a; 应用服务和数据库服务公用一台服务器 出现背景&#xff1a; 出现在互联网早期&#xff0c;访问量比较小&#xff0c;单机足以满足需求 架构优缺点&#xff1a; 优点&#xff1a;部署简单&#xff0c;成本低 缺点&#xff1…

Java生成p12证书

本文章使用的环境 jdk1.8&#xff0c;spring-boot2.6.13 一、pom依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.49</version></dependency><dependency>&…

PCL点云处理之最小中值平方(Lmeds法)拟合平面(二百三十四)

PCL点云处理之 最小中值平方法(Lmeds)拟合平面(二百三十四) 一、算法介绍一、拟合原理二、具体实现1.代码2.结果一、算法介绍 (本文提供详细注释,输出拟合平面参数和平面点云) Lmeds(Least Median of Squares)是一种统计学方法,用于拟合数据并减少异常值对拟合结果…

Spark-Scala语言实战(5)

在之前的文章中&#xff0c;我们学习了如何在scala中定义与使用集合和元组。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#xff08;…

【Web应用技术基础】CSS(6)——使用 HTML/CSS 实现 Educoder 顶部导航栏

第一题&#xff1a;使用flex布局实现Educoder顶部导航栏容器布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Educoder</title><script src"https://cdn.staticfile.org/jquery/1.1…

不启动BMIDE,Teamcenter如何查看property的real property name

问题描述&#xff1a; Teamcenter客户端&#xff0c;查看Item 属性&#xff0c;属性名称默认显示的是Display Name。 在各类开发过程中&#xff0c;对属性的操作&#xff0c;需要使用real property name才能进行。开发可能不在server端&#xff0c;没有安装BMIDE&#xff0c;如…

机器学习——元学习

元学习&#xff08;Meta Learning&#xff09;是一种机器学习方法&#xff0c;旨在使模型能够学习如何学习。它涉及到在学习过程中自动化地学习和优化学习算法或模型的能力。元学习的目标是使模型能够从有限的训练样本中快速适应新任务或新环境。 在传统的机器学习中&#xff…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

第三天-centos配置静态IP

跟着无涯老师学习安全知识的一天,今天遇到点问题。给新创建的centos配置静态IP的时候,可能是网卡配置文件里的内容修改或添加的不对,配置完之后网络不通。尝试了几次都没成功,明天再试试吧,今天就记这几个简单的命令,加油,晚安。

线程创建方式、构造方法和线程属性

欢迎各位&#xff01;&#xff01;&#xff01;推荐PC端观看 文章重点&#xff1a;学会五种线程的创造方式 目录 1.开启线程的五种方式 2.线程的构造方法 3.线程的属性及获取方法 1.开启线程的五种方式 创造线程的基本两步&#xff1a;&#xff08;1&#xff09;使用run方法…

学习笔记:NATS--自适应边缘和分布式系统的连接技术。(更新中)

基于NATS英文官方文档的学习,我将使用简单易懂的语言去解释NATS的各种机制及其原理。预计在一个月内,也就是在5月之前完成对NATS官方文档的笔记。大家可以将此笔记当做官方文档的中文低配版来学习。欢迎大家的阅读,也希望各位指出我笔记中可能存在的各种错误。目录1. NATS: …

【数据结构】顺序表的实现——静态分配

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;数据结构 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

TOP100-回溯(二)

4.39. 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制…

AIR780E引脚复用笔记

1、应用场景:使用AIR780E模块驱动TM1637数码管驱动芯片,原有方案是AIR724UG+TM1637。为了降低成本,按照官方方案进行代码迁移。伴随着代码迁移,硬件引脚也需要做相应调整。由于其他引脚已经分配了对应的功能,仅剩余I2C引脚未使用,所以需要把I2C引脚【PIN66 PIN67】作为普…

Excel·VBA数组平均分组问题

看到一个帖子《excel吧-数据分组问题》&#xff0c;对一组数据分成4组&#xff0c;使每组的和值相近 上一篇文章《ExcelVBA数组分组问题》&#xff0c;解决了这个帖子问题的第1步&#xff0c;即获取所有数组分组形式的问题 接下来要获取分组和值最相近的一组&#xff0c;只需计…