1

我需要为自动化 UITesting 设置我的模拟器。特别是从键盘中删除自动更正、拼写检查、预测等。

我正在为这样的一个模拟器这样做:

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 (才能获得UUID仅 iPhone 7 而不是 7+。这也只有在我之前真的选择 iPhone 7 作为 Xcode 中的模拟器时才有效。另一种方法是将 替换iPhone 7 (booted

但为了使其工作,脚本需要模拟器已经运行。当它已经运行时,更改 plist 文件实际上不会更新模拟器上的设置。

我如何能够启动一个模拟器,然后在设置它之前获取它的 UUID?

谢谢你。

4

1 回答 1

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,你仍然可以simctl通过直接执行 Ruby 命令来使用:

ruby -e "require 'simctl'; SimCtl.list_devices.each { |d| d.settings.disable_keyboard_helpers }"
于 2017-04-12T11:27:52.567 回答