IOS 自动化环境搭建
xcode配置
https://github.com/appium/WebDriverAgent
-
打开项目,找到WebDriverAgent.xcodeproj,双击打开
-
配置开发者账号,自己的AppleID也可以
打开code配置
新增账号
选择AppleID
添加自己的AppleID当开发者账号使用
找到配置文件
选择自己的开发者账号
找到要编译的报名修改
修改编译的包ID,需要区分,不然会报错
选择编译的项目
选择自己的手机
编译
成功之后,需要等会,直到手机出来webdriveragentrunner图标
如果编译需要输入登录密码,这个密码是电脑的登录密码,不是AppleID的密码,如果输入后无效,往下看
打开钥匙串,找到Apple Apple Development,选择始终信任,输入电脑登录密码,然后再打开这个,改回使用系统默认,再次输入电脑登录密码。然后再进行编译(怀疑是xcode的bug)
原理:通过iOS手机上的webdriveragent在手机上通信,使用过tidevice启动webdriveragent,通过HTTP的方式,然后使用封装好的wda框架,对APP进行点击等操作,和Android 的atx原理一致
macaca 查看元素:https://www.jianshu.com/p/2ec6f0a1f45a
-
需要一个iOS手机,并安装webdriveragent---(找鹏龙装,还需要找iOS开发把手机uuid加入到到公司的开发者账号里面)
-
安装阿里云第三方Python包,通过这个包,可以不需要Mac电脑,只需要有Python环境即可:https://github.com/alibaba/taobao-iphone-device
Python3.7+
pip3 install -U tidevice
tidevice version 安装后查看版本号
启动webdriveragent
tidevice wdaproxy -B com.julive.WebDriverAgentRunner.xctrunner --port 8200
参数说明:第一个参数是我们用的包,类似pip
第二个参数包涵了两个命令:Run XCTest和Relay,run xctest 相当启动webdriver,relay做端口转发,从手机上的端口转发到电脑上的端口
第三个参数-B 系统参数,类似于有这个参数知道后面还有其他参数
第四个参数 com.julive.WebDriverAgentRunner.xctrunner这是通过xcode打的一个iOS应用,到时候会通过这个应用通信, --port 8200 端口号,默认从手机的8200端口转发到电脑上的8200端口,需要用自己手机上的包名,不是同一个人打包的,报名也不一样
如下表示启动成功。
通过浏览器访问:http://localhost:8200/ 能访问即可
-
启动实例
启动实例我们使用facebook-wda,https://github.com/openatx/facebook-wda
wda 是atx的衍生产品,和Android的atx同源,非Facebook官方项目,这里可以不用appium了
import time
import wda
c = wda.Client("http://localhost:8200/") # 连接
print(c.status) # 打印状态
with c.session('com.netease.cloudmusic') as s: # 打开APP
time.sleep(10)
print(s.orientation)
s(text='我的').tap() # 点击
time.sleep(3)
s(text='播客').get().value # 获取value
print(s(text="播客").exists) # 判断元素是否存在
time.sleep(3)
e = s(text='云村').get(timeout=10.0) # 找元素,等10秒
time.sleep(3)
e.tap() # 找到后点击
time.sleep(5)
4.常用命令
tidevice list 列出连接设备
# 安装应用 $ tidevice install example.ipa
# 指定设备安装 $ tidevice --udid $UDID install https://example.org/example.ipa
# 卸载应用 $ tidevice uninstall com.example.demo
# 启动应用 $ tidevice launch com.example.demo
# 停止应用 $ tidevice kill com.example.demo
# 查看已安装应用 $ tidevice applist