我需要为自动UITesting设置模拟器。 特别是从键盘上删除Autocorrection,Spellchecking,Prediction等。
我正在为一个模拟器这样做:
plutil -replace KeyboardAutocapitalization -bool NO -- ~/Library/Developer/CoreSimulator/Devices/319FF855-F54C-4BB7-BDED-F0CC4B1FF8FC/data/Library/Preferences/com.apple.Preferences.plist
问题是,当测试在另一个设备上运行时,它将不会设置模拟器,因为UUID是硬编码的。
我也可以像这样启动/选择模拟器:
currentUUID="$(xcrun simctl list devices | grep "iPhone 7 (" | egrep -o -i "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")"
我必须放入iPhone 7 (
才能获得仅限iPhone 7的UUID
而不是7+。这也只有在我之前在Xcode中选择iPhone 7作为模拟器时才有效。
另一种方法是将iPhone 7 (
替换为booted
。
但为了使其工作,脚本需要模拟器才能运行。当它已经运行时,更改plist文件实际上不会更新模拟器上的设置。
如何启动模拟器,然后在设置之前获取它的UUID?
谢谢。
答案 0 :(得分:5)
plu创建了一个simctl
gem,可以操作模拟器。它可以创建,删除,启动设备并执行更多操作。一个有趣的功能是禁用键盘助手。
如果您使用Fastlane,则可以创建新的私人通道,这将禁用所有人的键盘助手。
安装此gem使用:
[sudo] gem install simctl
在Fastfile
添加此频道:
private_lane :disable_keyboard_helpers do
require "simctl"
SimCtl.list_devices.each do |d|
d.settings.disable_keyboard_helpers
end
end
现在在您的测试通道中,您可以像这样使用disable_keyboard_helpers
:
lane :test do |options|
disable_keyboard_helpers
scan
end
如果您没有使用Fastlane,您仍然可以直接执行Ruby命令来使用simctl
:
ruby -e "require 'simctl'; SimCtl.list_devices.each { |d| d.settings.disable_keyboard_helpers }"