1.python-IOS自动化测试环境搭建
2.用脚本肝iOS服FGO无限池(1):折腾WebDriverAgent
3.WebDriverAgent入门篇-安装和使用
4.淘系新工具开源!源码一款iOS自动化利器(附地址)
5.使用 GPT4V+AI Agent 做自动 UI 测试的分析探索
python-IOS自动化测试环境搭建
Python+iOS自动化测试环境搭建指南
要实现iOS应用的自动化测试,首先需要理解其基本架构:手机端的源码WebDriverAgent(如WDA Runner)扮演UIAutomator Server角色,通过XCUITest API操控界面,分析编译安装后,源码借助Apple的分析黑页源码制作usbmuxd服务在无网络条件下仍可连接设备。阿里开源的源码tidevice工具则负责启动WDA,支持Python等语言编写测试脚本。分析 WebDriverAgent由Facebook推出,源码作为iOS端的分析WebDriver服务器,通过XCTest与Apple API交互。源码它采用C/S架构,分析遵循WebDriver协议,源码并使用Mobile JSON Wire Protocol进行通信。分析tidevice则模拟xcodebuild与设备通信,源码允许在非Mac环境下执行测试,如Linux或Windows。 环境安装步骤包括:在真机上安装WebDriverAgent,确保安装iTunes(含usbmux驱动),然后安装tidevice及其Python库如facebook-wda。遇到如"Unknown exception: HTTPConnection.request() got an unexpected keyword argument 'chunked'"这类问题,可考虑降级urllib3库版本至1..。 操作流程为:使用tidevice启动WDA服务,保持连接窗口不关闭,然后编写测试脚本来实现功能,如自动打开iPhone设置搜索NFC。android 教程源码此外,UI元素定位工具WEditor也是不可或缺的,它支持Python开发,提供元素定位和调试功能。 以下是WEditor的安装步骤:安装过程中可能需要降级版本,安装成功后,浏览器会自动打开/Homebrew/install/HEAD/install.sh)" 然后,通过brew安装usbmuxd,这是连接手机和电脑的桥梁:brew install usbmuxd
接着,我们开始下载Xcode,正式版在App Store,而为了节省流量,我选择了beta版的安装包。在开发者网站上,你需要下载大约GB的文件。 信任设置是关键,连接手机后,你需要在设备上确认是否信任你的Mac。然后,是时候下载WebDriverAgent了,通过命令行在桌面上创建一个新的项目:cd Desktop
git clone /appium/WebDriverAgent.git
接下来,我们需要对WebDriverAgent进行一些配置。首先打开项目,选择Scheme中的WebDriverAgentRunner,然后配置设备、水产软件源码签名和能力。记得选择正确的Apple ID,并为Product Bundle Identifier设置一个独特的标识符,遵循Android包名格式。 经过编译和测试,手机上会显示一个无图标的应用,同时屏幕会有一层灰色的遮罩。这时,在终端输入iproxy命令,打开Airtest并选择连接,你的手机桌面将实时显示在Airtest的界面上,但可能会有较大的投屏延迟。下一步:图像识别与自动化</
对于有Python基础的你,这将是一个相对轻松的挑战。通过像opencv的match()这样的图像识别技术,我们可以实现刷本的自动化。Airtest的API文档提供了一站式解决方案,让你轻松上手。 9月日更新: 为了降低延迟,我尝试了在命令行中运行Airtest。安装airtest库后,使用以下命令行启动你的项目,加上--no-image参数,你会发现延迟得到了显著减少,操作变得更加流畅。麻将框架 源码python3 -m pip install airtest
airtest run 你的项目路径 --device iOS:///.0.0.1: --no-image
现在,框架已经搭建完毕,接下来就是用自动化脚本征服那无尽的池子,享受刷本的乐趣了。
WebDriverAgent入门篇-安装和使用
WebDriverAgent,简称WDA,是由Facebook推出的移动端自动化测试框架。它在iOS客户端内建了一个WebDriver服务器,允许远程控制设备进行测试,主要为测试人员设计。关于其详细介绍,可参考testerhome上的文章,链接见文末附录1。
WDA的核心原理是通过XCTest.framework和苹果API,直接在设备上执行命令。就像Accessibility Inspector,通过它,我们可以查看和操作APP元素,进行UI自动化测试。WDA则是借助这些工具,通过在设备上安装WebDriverAgentRunner,并通过API实现服务器和客户端交互,编写业务测试脚本,从而实现自动化测试。
WDA的老板助手源码特性包括:支持真机和模拟器测试,支持USB设备,提供直观的Inspector,便于Xcode启动和调试,以及部分Mobile JSON Wire Protocol Spec的实现。具体安装过程包括下载工程、配置依赖和构建inspector,使用时需启动WDA并验证其服务器URL,然后根据API编写测试脚本,如通过python简化操作(附录2链接)。
最后,WDA在网易游戏团队的ATX测试框架和知名appium中都有应用。如果你想进一步学习,可以查看testerhome网站,它有丰富的测试技术文章和问答,适合QA同学深入了解,附录链接3-6提供了相关文章和教程。
淘系新工具开源!一款iOS自动化利器(附地址)
tidevice是由阿里某小组开发的一款用于iOS自动化的Python工具,通过逆向iOS通信协议实现,已在淘宝和其他部分事业部得到广泛应用。它用于性能采集和UI自动化测试,无需被测应用做任何修改,使用范围不再局限于Mac上。
该项目的开源地址:请通过Star给作者喂食
关注我们账号,别错过更多阿里工程师一线技术干货
———
tidevice能够帮助你完成哪些操作?
熟悉libimobiledevice工具集的同学可能已经了解到大部分功能,tidevice对其中的功能进行了重新实现,例如截图、查看日志、应用安装等,使日常操作更加方便。
除了常规功能,tidevice还能够启动WebDriverAgent (WDA),实现无侵入的黑盒iOS自动化测试。
WebDriverAgent (WDA) 是Facebook推出的项目,允许在iOS设备上运行App进行自动化测试,无需对被测应用进行任何修改。然而,由于手机必须连接到Mac并使用xcodebuild运行WDA,推广起来较为困难。tidevice通过模拟xcodebuild与手机进行通信,启动WDA,实现iOS自动化在Linux、Windows平台上的运行。
安装tidevice很简单,使用pip3安装即可。安装完成后,可进行版本查看、设备列表查看等测试操作。
常用命令包括:
安装应用:tidevice install example.ipa
通过URL安装应用:tidevice install .apple.Preferences
截图:tidevice screenshot screenshot.jpg
查看系统日志:tidevice syslog
更多命令帮助:tidevice -h
启动WebDriverAgent:tidevice没有通过xcodebuild,而是通过usbmuxd直接与手机服务通信,实现WDA的启动。usbmux协议已被破解,tidevice启动速度更快,稳定性更强。
前提条件满足后,执行命令即可启动WDA。验证WDA工作正常的方法是打开浏览器访问localhost:/status或使用Appium调度。
对于习惯使用OC或Swift直接编写UI自动化用例的用户,tidevice同样支持。通过tidevice运行XCTest UITests,包含测试应用和执行测试应用的ipa可以在多个手机上运行。
总结:tidevice在阿里巴巴内部应用效果良好,欢迎试用并提供反馈。若使用体验满意,请留下Star。感谢关注阿里巴巴淘系技术部官方账号。
使用 GPT4V+AI Agent 做自动 UI 测试的探索
从 Web 诞生之日起,UI 自动化就成了测试的难点,尽管发展了很多的 webdriver 驱动和 diff 驱动的工具,但它们的投入产出比一直被质疑,自动化率越高维护成本越高,大部分都做着就放弃了,还有一部分在做与不做间纠结。
本文结合一些开源的项目探索使用 GPT 自动做 UI 测试的可能性。
当前 UI 的主要问题是通过 Webdriver 控制浏览器执行,这些工具都需要先查找到对应元素的 Elements,无论是录制的还是自己编写的在面对 UI 变化,元素变化时都需要耗费很大的精力去重新识别,解析 Dom 查找,这个工作乏味且没有效率;另一种是通过图像进行点击,比如 Sikuli 这种工具,主要的问题也是复用性较差,换个分辨率的机器或者发生少的改动就不可用。
使用 GPT 做 UI 测试尝试了两种方案:第一种将 Html 元素投喂给 GPT,效果一般,因为 Html 比较大,Token 的消耗很大;第二种思路是让 GPT 像人一样思考和测试,比如一个人打开一个网页后,他通过眼睛看到的页面文字或图标,然后用手完成点击和输入的操作,最后通过页面的弹窗或者文字来识别是否有错误,这几个动作通过大脑统一协调。
新的方案主要结合 Playwright,SoM视觉标记,GPT4Vison,GPT4,AutoGen来实现。主要的原理是:通过 Playwright进行浏览器操作,相当于“手”;进行SoM 视觉数据标记,相当于“眼睛”;通过GPT4+AutoGen 将这些步骤串起来实现协调控制,相当于“大脑”和“神经中枢”。
使用 Playwright 注入 JS,进行 SoM 视觉提示标记。如前文提到的 GPT4V 并不能有效的识别 Web 的元素,所以在使用 GPT4V 之前进行图像标记,图像标记现在有两种方式,一种是通过 AI 识别进行标记,另一种是通过在浏览器中注入 pagemark.js,利用 Playwright 执行 js 函数来完成页面的标记。
Prompt 提取元素坐标,利用正则表达式从GPT4V 的 response 中提取查询到的元素的 bbox id,结合在 SoM 标记中记录的 json 文件,找到编号的元素坐标。
Playwright是一个非常强大的操作浏览器的工具,这里因为前面已经通过 GPT4V 识别了,所以我们主要通过 坐标 的方式来控制元素,不再需要解析Dom 来控制,主要的包括,点击,双击,鼠标拖动,输入,截图等。
AutoGen是一个代理工具,它能够代理多个 LLM在不同会话间切换,能够自动的调用预定的函数,并协调这些 LLM 完成任务。在上面的程序中,实现了:眼睛:通过 GPT4V 来识别元素;手:通过 Playwright 来做各种操作;后面需要通过一个大脑来协调手、眼完成任务,这里通过 GPT4+AutoGen 来实现大脑的协同调度。
当前的主要问题包括 GPT 在中文语境下识别的不太友好,AutoGen 对于处理预定义的动作也会有问题,GPT4V 真的很贵。未来的想法是将每次向 GPT4V请求的图像识别做本地化处理,结合现有的一些测试方法,从而减少 Token,缩短执行耗时;面向业务的 GPT需要不断训练,将系统使用手册和一有的 PRD 文档投喂给 GPT,增强 gpt 的系统识别和测试能力。