为自动UITesting设置模拟器

时间:2017-04-10 08:58:37

标签: ios automated-tests simulator xcode-ui-testing run-script

我需要为自动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?

谢谢。

1 个答案:

答案 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 }"