问答 如何用 appium 同时操作多个 iOS 模拟器执行不同的测试 case

沙子 · 2017年05月04日 · 最后由 沙子 回复于 2017年05月08日 · 1560 次阅读

目的

实现启动多个 appium 服务,同时在不同的模拟器上执行多个不同的测试 case

遇到的问题

问题一

用一个 xcode 启动多个模拟器
正常启动一个模拟器后,命令再启动另外一个模拟器

cd /Applications/Xcode.app/Contents/Developer/Applications/
open -n Simulator.app/

启动后,通过 Hardware-Device 选择一个其他不同的版本或者型号,同样的方法启动了多个模拟器;

然后启动多个 appium 不同端口的 server,因为模拟器不能指定 udid 去执行,所以单通过端口号,deviceName 区别设备,执行不同测试 case 时模拟器不能区别不同的模拟器。
查了查原因:Appium 底层是通过 UIAutomation 的 instrument 来驱动运行的,通过 instrument 启动运行,默认会启动当前使用的 Xcode 版本安装的最新版本的 SDK;就是说同一个 xcode 启动的模拟器 appium 认的都是一个。

问题二

通过安装不同版本的 xcode 启动多个模拟器测试,但是这样需要不停切换系统使用的 xcode 版本来启动不同的模拟器,执行 case 也是串行的,也不能实现同时执行多个不同的 case 在不同的模拟器上。

求助,有没有同学遇到这样的情况,在不同的 iOS 模拟器上并行执行不同的 case,我的问题现在是卡在如何去处理多个可用模拟器。
有看到 Bluepill 的文章,Bluepill 用的不是 appium,不知道测试中好不好使,做最后考虑使用。

共收到 2 条回复 时间 点赞

UIAutomation 已经被淘汰了吧,XCode 8 开始就不支持了。现在应该用 UI Testing Bundle 了。

至于 UIAutomation 的多模拟器并行,以前在 GTAC 的视频看到过 Uber 有类似的演示,有没有说具体技术细节不是很记得。要做到模拟器同时多开,需要用到一个很重要的工具:FBSimulatorControl

陈恒捷 回复

FBSimulatorControl 这个也是要 Xcode8.3.2 的 我再找找看

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册