平台搭建:tidevice(Windows逆向通信iOS工具)+WebDriverAgent(iOS通信服务)+facebook-wda(iOS测试框架)
macOS+Xcode:在手机上安装WebDriverAgent的时候需要用到,必须要Xcode工具构建,构建完就不依赖了。
工具介绍:
1、tidevice
在window系统可以跑IOS自动化脚本,得力于tidevice这个工具,tidevice 是阿里开源的一个基于Python的iOS自动化工具,通过逆向iOS通信协议,模拟xcodebuild与手机进行通信,向手机发送特定的指令,来启动WDA,从而可以脱离Mac电脑,能够在Linux、Windows上运行iOS自动化。tidevice基于python实现了libimobiledevice中的功能。
2、WebDriverAgent
WebDriverAgent是Facebook 在2015年的 SeleniumConf 大会上推出了一款iOS移动测试框架。它在 iOS 端实现了一个 WebDriver server ,通过这个 server 来实现远程控制 iOS 设备。它主要通过连接XCTest.framework来调用Apple的API实现对设备的操作。
WebDriverAgent采用C/S架构,集成appium使用的WebDriver协议规范,通信协议使用Mobile JSON Wire Protocol。
WDAClient:WDA的客户端,测试库facebook-wda 就是 WDA 的 Python 客户端库,通过HTTP协议(Mobile JSON Wire Protocol)与WebDriverAgent进行通信。
WebDriverAgentRunner:运行在手机上的WDA server,默认监听端口为8100,主要功能包括①接收WDAClient的请求并将操作命令发送给XCTest.framework。②将响应发送给WDA Client
3、facebook-wda
facebook-wda 是ATX项目下面的一个子库,专门提供 iOS 应用的自动化测试,可以通过 ATX 使用这个库,当然也可以单独拿来使用。facebook-wda 这个 Python 库,通过直接构造 HTTP 请求直接跟WebDriverAgent通信。它是一个非常短小精悍的一个库,并不像 appium、macaca 还有一个中间转发服务,支持这么多的语言。虽然代码比较精炼,但是能完成的功能却非常强大。你能在 appium 里面找到的功能,这个库有提供,找不到的功能,这个库也有提供。
4、weditor
元素定位工具,安卓、IOS都可以用
5、iTunes
Windows连接苹果设备工具
工具下载和安装:
iTunes:
因为iTunes里面有usbmux驱动,需要安装一下它,iTunes安装成功后,连接上你的iPhone。
- 下载 Windows 10(64 位)版 iTunes 12.10.11
- 下载 Windows 10(32 位)版 iTunes 12.10.11
weditor:
参考Android安装环境方法, 使用以下命令安装weditor
pip3 install -U weditor
启动weditor
python -m weditor
tidevice:
该工具要求python环境3.6+,使用pip3命令来安装tidevice,安装成功后设置全局环境变量:
pip3 install -U "tidevice"
查看是否安装成功:
tidevice version
查看手机信息:
tidevice info
查询应用信息:
tidevice applist
启动wda
tidevice -u [设备 udid] wdaproxy -B [wda 的 bundle Id] --port 8100 # 运行 XCTest 并在PC上监听8100端口
运行成功后打开浏览器访问: http://127.0.0.1:8100/status,会看到以下信息:
{
"value" : {
"message" : "WebDriverAgent is ready to accept commands",
"state" : "success",
"os" : {
"testmanagerdVersion" : 28,
"name" : "iOS",
"sdkVersion" : "16.4",
"version" : "16.3.1"
},
"ios" : {
"ip" : "192.168.0.117"
},
"ready" : true,
"build" : {
"time" : "Jun 6 2023 11:05:04",
"productBundleIdentifier" : "com.facebook.WebDriverAgentRunner"
}
},
"sessionId" : null
}
WebDriverAgent:
这篇文章写得很详细了,不再浪费时间了:[facebook-wda]搭建iOS App自动化环境_wda.client_LL-Dynabook的博客-CSDN博客
facebook-wda:
pip3 install -U facebook-wda
简单测试:
import wda
c = wda.Client('http://localhost:8100') # DEVICE_URL
c.session().app_activate("com.apple.Preferences") # 打开设置
c.sleep(2)
c.home()
具体详细方法可以看官方文档:GitHub - openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)
以上环境搭建完成了,可以去写ios app自动化脚本了。
备注:
- 部署iOS测试平台需要苹果开发者证书,现在使用个人Apple ID登陆即可,不需要另外注册付费开发者账号
- 个人版的免费证书,每隔7天左右,要手动更新开发者证书;
- 需要手动的在iPhone中选择信任证书,通用->设备管理->选择信任;
- 最多支持3台设备;
建议:使用公司的企业账号或个人收费账号测试(企业账号可以绑定100台也不需要更新证书),不然很头疼