2

上下文:使用 Xcode 的 UIAutomation 和模拟器 6.1 和 5.1 运行自动化脚本 Xcode 版本是 4.6.1

问题:从终端运行 shell 脚本时,UIAutomation 总是打开 6.1,即使我已将应用程序路径设置为 5.1。

我已经尝试在 5.1 上构建和运行,如果我从 Instruments 运行测试,我可以选择 5.1 的目标并且它工作正常。问题只是当我从命令行运行它时。

我检查了 iphonesimulator.plist 并且 currentSDKRoot 指向 5.1 路径,但是一旦 shell 脚本运行,它就会更改为 6.1。无论如何我可以强制它使用5.1吗?

经过数小时的搜索(包括最合适的一个 -使用仪器命令行实用程序启动特定硬件版本的 iOS 模拟器),似乎没有解决方案。

有一种方法可以使用默认值设置设备 write com.apple.iphonesimulator \"SimulateDevice" '"iPad"' 我需要类似 defaults write com.apple.iphonesimulator \"Version" '"5.1"' 虽然显然没有'不工作。

任何指针将不胜感激。谢谢你!

编辑:我希望这可以通过 XCode 5 解决,但我仍然有同样的问题,iOS7 模拟器总是打开!顺便说一句,有没有办法绕过这个问题 - 我敢肯定有很多运行多个模拟器版本。

4

2 回答 2

1

这并不优雅,但它是一种解决方法,我们已经能够开始我们的自动化设置:

从 App Store
安装 Xcode 5 安装 Xcode 4.6.3 或从开发人员门户的“Xcode 旧版本页面”
重复旧版本的 Xcode,其中最大 sim 版本 == 您要运行的版本
使用“sudo xcode-select - switch /path/to/Xcode.app " 选择 Xcode 的版本

希望有帮助!

于 2013-09-23T22:21:37.107 回答
1

在我的 Jenkins 机器上运行自动化测试时,我也遇到了这个问题,我做了以下操作来使用 6.1 版模拟器而不是 7.0 版模拟器测试我的应用程序:

使用詹金斯:

第 1 步 = 我创建了一个使用 6.1 sdk 版本构建我的 ios 应用程序的作业。

============================================

第 2 步 = 我使用第一个作业的下游 bash 脚本创建了第二个作业,该脚本执行以下操作:

[进入 Xcode 应用程序位置进入 iphone 模拟器 sdk 目录]

cd '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/'

[将'iPhoneSimulator7.0.sdk'目录移动到另一个位置(我选择了桌面)]

echo [在此处输入管理员密码] | sudo -S mv iPhoneSimulator7.0.sdk/${HOME}/Desktop

[将“iPhoneSimulator6.1.sdk”重命名为“iPhoneSimulator7.0.sdk”]

echo [在此处输入管理员密码] | sudo -S mv iPhoneSimulator6.1.sdk/ iPhoneSimulator7.0.sdk/

============================================

STEP 3 = 我创建了执行我的测试的第三个作业。我的第二份工作下游的第三份工作。

============================================

第 4 步 = 我创建了第 3 个作业下游的第 4 个作业。第 4 个作业使用 bash 脚本,该脚本执行以下操作:

[进入 Xcode 应用程序位置进入 iphone 模拟器 sdk 目录]

cd '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/'

[将“iPhoneSimulator7.0.sdk”重命名为“iPhoneSimulator6.1.sdk”]

echo [在此处输入管理员密码] | sudo -S mv iPhoneSimulator7.0.sdk/ iPhoneSimulator6.1.sdk/

[转到您移动“iPhoneSimulator7.0.sdk”的目录(在我的情况下,我将“iPhoneSimulator7.0.sdk”移动到桌面)]

cd ${HOME}/桌面

[将'iPhoneSimulator7.0.sdk'目录移回Xcode app sdk目录]

echo [在此处输入管理员密码] | sudo -S mv iPhoneSimulator7.0.sdk/'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/'

[我杀死任何与自动化相关的挥之不去的进程]

ps ax|grep [b]ash|awk '{print $1}'|xargs kill -9

ps ax|grep [i]nstruments|awk '{print $1}'|xargs kill -9

============================================

我可能需要让这个过程更加简单,但我认为它比在自动化机器上拥有多个 xcode 实例更好。

于 2013-10-01T01:22:43.277 回答