佛山seo网站排名/爱站小工具
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
相关文章:

iOS客户端自动化UI自动化airtest+appium从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图
Android客户端自动化UI自动化airtest从0到1搭建macos脚本设计demo演示全网最全最详细保姆级有步骤有图-CSDN博客 避坑系列-必读: 不要安装iOS-Tagent ,安装appium -这2个性质其实是差不多的都是为了安装wda。注意安装appium最新版本,安装完…...

每周编辑精选|在线运行 Deepmoney 金融大模型、AI 偏好等多个优质数据集上线
目前,AI 领域对金融模型的研究成果大多是基于公共知识进行训练的,但在实际的金融实践中,这些公共知识对于当前市场的可解释性往往严重不足。一个理想的金融大模型应该能够理解新闻或数据事件,并能够即时地从主观和量化两个角度对事…...

C++多重继承与虚继承
多重继承的原理 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。 多重继承的派生类继承了所有父类的属性。 在面向对象的编程中,多重继承意味着一个类可以从多个父类继承属性和方法。 就像你有一杯混合果汁,它是由多种水果榨取…...

请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?
请简单介绍一下Shiro框架是什么? Shiro框架是一个强大且灵活的开源安全框架,为Java应用程序提供了全面的安全解决方案。它主要用于身份验证、授权、加密和会话管理等功能,可以轻松地集成到任何Java Web应用程序中,并提供了易于理解…...

TouchGFX之Button
TouchGFX中的按钮是一种感应触控事件的控件,能够在按钮被按下/释放时发送回调 代码 #ifndef TOUCHGFX_ABSTRACTBUTTON_HPP #define TOUCHGFX_ABSTRACTBUTTON_HPP #include <touchgfx/Callback.hpp> #include <touchgfx/events/ClickEvent.hpp> #includ…...

计算机组成原理 — 指令系统
指令系统 指令系统指令的概述指令的格式指令的字长取决于 操作数类型和操作种类操作数的类型数据在存储器中的存放方式操作类型 寻址方式指令寻址数据寻址立即寻址直接寻址隐含寻址间接寻址寄存器寻址寄存器间接寻址基址寻址变址寻址堆栈寻址 RISC 和 CISC 技术RISC 即精简指令…...

使用easyYapi生成文档
easyYapi生成文档 背景1.安装配置1.1 介绍1.2 安装1.3 配置1.3.1 Export Postman1.3.2 Export Yapi1.3.3 Export Markdown1.3.4 Export Api1.3.6 常见问题补充 2. java注释规范2.1 接口注释规范2.2 出入参注释规范 3. 特定化支持3.1 必填校验3.2 忽略导出3.3 返回不一致3.4 设置…...

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)
目录 一、摆花 思路一: 确定状态: 初始化: 思路二: 确定状态: 初始化: 循环遍历: 状态转移方程: 二、数字三角形加强版 一、摆花 题目描述 小明的花店新开张,为了吸…...

Elasticsearch(15) multi_match的使用
elasticsearch version: 7.10.1 multi_match是Elasticsearch中的一种查询类型,允许在一个或多个字段上执行全文本搜索,并合并各个字段的结果得分。这种查询有助于实现跨多个字段的统一搜索体验。 语法 {"query": {"multi_m…...

nodejs的线程模型和libuv库的基本使用
文章目录 nodejs中集成addon本地代码的回调问题单线程事件驱动模型libuvlibuv基本框架addon中使用libuv代码nodejs中集成addon本地代码的回调问题 在C++的代码中,回调函数是一个基本的代码调用方式。而在我自己的开发实践中,需要在addon这样一个nodejs的本地化模块中实现一个…...

Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e
天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.第一步 需要一个数组数据 {"week": "全部","hOutName": null,"weekendPrice": null,"channel": "门市价","hOutId": 98,"cTime": "…...

深度学习pytorch——激活函数损失函数(持续更新)
论生物神经元与神经网络中的神经元联系——为什么使用激活函数? 我们将生物体中的神经元与神经网络中的神经元共同分析。从下图可以看出神经网络中的神经元与生物体中的神经元有很多相似之处,由于只有刺激达到一定的程度人体才可以感受到刺激,…...

《苹果 iOS 应用开发与分发的关键问题解析》
一、背景 解决同事问的问题,来来回回被问好几次相同的问题,然后确认,我觉得不如写个文档 二、非研发人员安装iOS应用方式 TestFlightIPA 文件 对比 TestFlightIPA 文件安装方式TestFlight 是苹果提供的一个 beta 测试平台,开发者…...

爱上数据结构:顺序表和链表
一、线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条…...

python知识点总结(十)
python知识点总结十 1、装饰器的理解、并实现一个计时器记录执行性能,并且将执行结果写入日志文件中2、队列和栈的区别,并且用python实现3、设计实现遍历目录与子目录4、CPU处理进程最慢的情况通常发生在以下几种情况下:5、CPU处理线程最慢的…...

【Python】探索 Python 编程世界:常量、变量及数据类型解析
欢迎来CILMY23的博客 本篇主题为 探索 Python 编程世界:常量、变量及数据类型解析 个人主页:CILMY23-CSDN博客 Python系列专栏:http://t.csdnimg.cn/HqYo8 上一篇博客: http://t.csdnimg.cn/SEdbp C语言专栏: htt…...

vue页面实现左右div宽度,上下div高度分割线手动拖动高度或者宽度自动变化,两个div宽度或者高度拉伸调节,实现左右可拖动改变宽度的div内容显示区
实现左右或者上下div两部分拖动,宽度或者高度自动变化,实现流畅平滑的变化,还可以是实现拖动到一定宽度就不让拖动了,如果你不需要最小宽度,就直接去掉样式就行 这是页面。分左中右三部分,中间我是用来作为拖动的按钮…...

知攻善防应急靶场-Linux(1)
前言: 堕落了三个月,现在因为被找实习而困扰,着实自己能力不足,从今天开始 每天沉淀一点点 ,准备秋招 加油 注意: 本文章参考qax的网络安全应急响应和知攻善防实验室靶场,记录自己的学习过程&am…...

ffmpeg命令行
ffmpeg 如果要在linux gdb 调试,需要在configure 时候不优化 开启调试 ./configure --enable-debug --disable-optimizations make如何开启gdb 调试 gdb ffmpeg_gset args -i test.hevc -c:v copy -c:a copy output_265.mp4rh264 的流生成mp4 文件,不转…...

VMware虚拟机更换引导顺序
前言 我用wmware装了黑群晖测试,将img转成vmdisk的格式之后发现系统引导盘之后1G,有点太小了 我准备把wmware的黑群晖系统迁移到新添加的虚拟磁盘里 1.登录黑群晖的SSH 请先在黑群晖的控制面板中的终端机和SNMP里面启用SSH功能,才能使用ss…...

RAFT:让大型语言模型更擅长特定领域的 RAG 任务
RAFT(检索增强的微调)代表了一种全新的训练大语言模型(LLMs)以提升其在检索增强生成(RAG)任务上表现的方法。“检索增强的微调”技术融合了检索增强生成和微调的优点,目标是更好地适应各个特定领…...

Stable Diffusion 本地训练端口与云端训练端口冲突解决办法
方法之一,修改本地训练所用的端口 1 首先,进入脚本训练器的根目录 例如:C:\MarkDeng\lora-scripts-v1.7.3 找到gui.py 2 修改端口号 因为云端训练器也是占用28000和6006端口 那么本地改成27999和6007也是可以的 保存退出,运行启动…...

C++学习day1
思维导图 定义自己的命名空间,其中有string类型的变量,再定义两个函数,一个函数完成字符串的输入,一个函数完成求字符串长度,再定义一个全局函数完成对该字符串的反转 #include <iostream> using namespace std;…...

openGauss CM
CM 可获得性 本特性自openGauss 3.0.0版本开始引入。 特性简介 CM(Cluster Manager)是一款数据库管理软件,由cm_server和cm_agent组成。 cm_agent是部署在数据库每个主机上,用来启停和监控各个数据库实例进程的数据库管理组件…...

北斗短报文+4G应急广播系统:实时监控 自动预警 保护校园安全的新力量
安全无小事,生命重如山。学生是祖国的未来,校园安全是全社会安全工作的一个重要的组成部分。它直接关系到青少年学生能否安健康地成长,关系到千千万万个家庭的幸福安宁和社会稳定。 灾害事故和突发事件频频发生,给学生、教职员工…...

2024河北石家庄矿业矿山展览会|河北智慧矿山展会|河北矿博会
2024中国(石家庄)国际矿业博览会 时间:2024年7月4-6日 地点:石家庄国际会展中心.正定 随着全球经济的持续增长和矿产资源需求的不断攀升,矿业行业正迎来前所未有的发展机遇。作为矿业领域的盛会&…...

ruoyi使用笔记
1.限流处理 RateLimiter PostMapping("/createOrder") ApiOperation("创建充值订单") RateLimiter(key CacheConstants.REPEAT_SUBMIT_KEY,time 10,count 1,limitType LimitType.IP) public R createOrder(RequestBody Form form) {//业务处理return …...

论文《Exploring to Prompt for Vision-Language Models》阅读
论文《Exploring to Prompt for Vision-Language Models》阅读 论文概况论文动机(Intro)MethodologyPreliminaryCoOp[CLASS]位置Context 是否跨 class 共享表示和训练 ExperimentsOverall ComparisonDomain GeneralizationContext Length (M) 和 backbon…...

科普 | Runes 预挖矿概念
作者:Jacky X/推:zxl2102492 关于 Runes 协议的前世今生,可以点击阅读这篇文章 👇 《简述 Runes 协议、发展历程及最新的「公开铭刻」发行机制的拓展讨论》 什么是传统预挖矿概念 这轮比特币生态爆发之前,预挖矿&…...

蓝桥杯真题Day40 倒计时19天 纯练题!
蓝桥杯第十三届省赛真题-统计子矩阵 题目描述 给定一个 N M 的矩阵 A,请你统计有多少个子矩阵 (最小 1 1,最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数…...