1.淘系新工具开源!源码一款iOS自动化利器(附地址)
2.WebDriverAgent入门篇-安装和使用
3.用脚本肝iOS服FGO无限池(1):折腾WebDriverAgent
4.WebDriverAgentçapi使ç¨
5.python-IOS自动化测试环境搭建
6.使用 GPT4V+AI Agent 做自动 UI 测试的源码探索
淘系新工具开源!一款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安装即可。安装完成后,可进行版本查看、设备列表查看等测试操作。tradex 源码
常用命令包括:
安装应用: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。感谢关注阿里巴巴淘系技术部官方账号。
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服FGO无限池(1):折腾WebDriverAgent
探索iOS服FGO无限池的脚本之旅(1):从零开始的自动化挑战</ 让我们从头开始,踏上这场iOS版FGO无限池的自动化探索。首先,我们的主角是一台闲置已久的iPhone 6s Plus,运行着iOS .0,考虑到全面屏设备可能存在的零点问题,这个选择显得明智。 在你的开发平台,一台Intel NUC 8搭配黑苹果系统,libfacedetection源码静静地等待着我们的指令——macOS .5.2,这台设备的性价比超乎你的想象,成本不到元。关于如何搭建,我稍后会分享详细的搭建过程。 接下来是工具链:Xcode .0,这是编译WebDriverAgent的基石;Homebrew,macOS的包管理器,会帮助我们安装必不可少的usbmuxd;而Airtest,作为这次自动化任务的主力,它的强大功能将在后续大放异彩;最后,别忘了Python,这个万能的编程语言,是我们脚本的指挥棒。 在终端中,只需一行命令,就能按照Homebrew官网的指引安装:/bin/bash -c "$(curl -fsSL /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进行一些配置。skydata 源码首先打开项目,选择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çapi使ç¨
æå¼ wda/__init__.py æ件ï¼ä¸»è¦æå 个类Rect(list)ãBaseClient(object)ãAlert(object)ãClient(BaseClient)ãSelector(object)ãElement(object)ãUSBClient(Client)
é¢è®¾ç¯å¢åé
åèï¼ è¿æ¶çè±æ使ç¨ææ¡£
æ£æ¥æå¡ç¶æï¼ curl -X GET $JSON_HEADER $DEVICE_URL/status
主çé¢ï¼ curl -X POST $JSON_HEADER -d "" $DEVICE_URL/wda/homescreen
appç¸å ³æ¹æ³ï¼app_startãapp_list(?)ãapp_stopãapp_stateãapp_activateãapp_launchãapp_terminate
æå¿ç¸å ³æ¹æ³ï¼tapãclickãdouble_tapãtap_holdãswipe_xxãpressç
1ãæ æ³æ¥çinspector
2ãSelectoråElementæä¹ä½¿ç¨
d(text=u"åç°åå¸ç¹è²é åº").scroll() #æ»å¨ç´å°æ¾å°valueï¼âåç°åå¸ç¹è²é åºâçå°æ¹ï¼ï¼
d(class_name="StaticText")[0].click()
d(xpath="//XCUIElementTypeButton[@label='lblseven']").click()
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。此外,UI元素定位工具WEditor也是不可或缺的,它支持Python开发,提供元素定位和调试功能。 以下是WEditor的安装步骤:安装过程中可能需要降级版本,安装成功后,浏览器会自动打开http://localhost:/,选择目标设备iOS并连接,最后点击dump hierarchy以定位元素。使用 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 的系统识别和测试能力。
软件测试 | 如何安装WebDriverAgent
WebDriverAgent 是 iOS 设备自动化测试的关键组件,它允许远程控制设备,主要由 Facebook 开发并现由 Appium 维护。在 Appium 环境中已内置 WebDriverAgent,因此只需安装 Appium 即可。
为了开始使用 WebDriverAgent,首先需要执行目录下的 ./Scripts/bootstrap.sh 脚本。通常,Appium 包含的 WebDriverAgent 存在于路径 /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent。
在设备上运行 WebDriverAgentRunner,并配置相应的 Team、certificate。完成配置后,点击“运行”以启动服务。当 build 成功后,通过产品->Test 可以对设备进行测试。
在使用 Appium 进行测试时,需确保手机已信任 WebDriverAgent。在模拟器下,根据设备设置对应的 Capability,如使用 browserName 替代 app 并设置为 Safari。执行命令获取本机可用的 deviceName,并在启动 Session 后检查成功界面,即可开始进行测试。
遇到常见问题如“Unable to launch WebDriverAgent because of xcodebuild failure: 'ENOENT: no such file or directory'”时,可能是因为 WebDriverAgent 的依赖出错。解决方法是进入 Appium 目录并执行 npm install 命令,然后重新启动。
如需获取更多软件测试行业资讯,可关注 @南音主页。推荐阅读南音撰写的文章,包括测试开发简历写作与面试指导、软件测试的未来前景、为什么选择软件测试、面试的三大误区、求职不顺解决方案、敏捷开发 Scrum、极限编程 XP、DevOps 开发模型、JVM Sandbox 使用入门、Frida 的安装与使用、Vue.js 的安装与介绍、vue restful 请求、Java 数据持久化技术、Spring Boot 的 RESTful 设计与实现、YAML 的介绍等内容。