公司一直没有 IOS 自动化,搞得很尴尬,个人感觉搞自动测试的,不搞 IOS 自动化,就像金 X,少了重要一点啊。也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之。某天线上 IOS 出 bug 了,领导遂一咬牙一跺脚决定,搞 IOS 自动化,期限一个月!领导的决定总是那么简约而又简单,对我们这些没有摸过 MAC 的弱鸡来说,IOS 自动化 0 到 1,压力山大啊。好在不到一个月,终于搞定了。和向我一样的的弱鸡们分享一下 IOS 模拟器多开集成测试从 0 到 1 中间的各个坑,大神自行绕道吧。
2.解决办法:执行的命令写完整路径例:/usr/local/Cellar/node/10.5.0_1/bin/node /usr/local/lib/node_modules/appium/build/lib/main.js
[XCUITest] Launching WebDriverAgent on the device
[XCUITest] Error: Carthage binary is not found. Install using `brew install carthage` if it is not installed and make sure the root folder, where carthage binary is installed, is present in PATH environment variable. The current PATH value: '/usr/bin:/bin:/usr/sbin:/sbin'
[XCUITest] at Object.wrappedLogger.errorAndThrow (/usr/local/lib/node_modules/appium/node_modules/appium-support/lib/logging.js:78:13)
[XCUITest] at checkForDependencies$ (/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/lib/wda/utils.js:70:9)
[XCUITest] at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40)
[XCUITest] at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22)
[XCUITest] at GeneratorFunctionPrototype.prototype.(anonymous function) [as throw] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21)
[XCUITest] at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37)
1.原因,java 运行命令时,编译 WDA 的 carthage 在 '/usr/bin:/bin:/usr/sbin:/sbin'路径下找不到(carthage 的软连接,我们通常是在/usr/local/bin/下的)。
2.解决办法:在/usr/bin 里创建 carthage 的软连接。由于 Mac 系统关键目录开启了保护,通常是直接创建是创建不成功的。
3.重启电脑
4.command + R 进入 recover 模式(重启过程中一直按着不放)
5.点击最上方菜单使用工具,选择终端
6.运行命令 csrutil disable
7.当出现一长串输出信息中有 successfully 字样,代表关闭成功!
8.重启电脑,打开终端。cd /usr/bin,在/usr/bin 里创建 carthage 的软连接,根据我的安装目录软连接命令是:sudo ln -s /usr/local/Cellar/carthage/0.30.1/bin/carthage carthage
目前我一台电脑开四个模拟器,开多了怕垃圾机器受不了
capabilities.setCapability("useNewWDA", true);//iOS 并发必须要重新装 WDA
capabilities.setCapability("wdaLocalPort", getWDAFreePort());//WDA 端口
capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, “根据任务运行时取得空闲的模拟器 UDID”);
机器就开始执行了
不会录屏,并行执行的界面贴不上了。
Mac 和 windows 许多地方差别还是挺大的。号称一处编译处处使用的 java 也只是说说而已。
第一次接触使用 Mac 各种不熟,弱鸡无力啊。对大神们来说搞这些如探囊取物,对于我这样的弱鸡来说举步维艰,也学会了 rm -rf /* 等命令。
好在一个月内搞出来了,虽然领导还是嫌弃进度慢。
要优化的地方还很多,很多坑也许才刚刚开始,期待大神们指点一下,谢谢。