2017-04-10 64 views
1

我需要设置我的模拟器自动UITesting。 尤其是从键盘上删除自动更正,拼写检查,预测等。设置自动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 (为了得到只有iPhone 7 UUID,而不是7+。这也只适用于我以前在Xcode中真的选择iPhone 7作为模拟器的情况。 这样做的另一种方法是用booted替换iPhone 7 (

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

我怎样才能启动模拟器,然后在设置之前获取它的UUID?

谢谢。

回答

4

plu创建了一个​​宝石,它能够操纵模拟器。它可以创建,删除,引导设备并做更多。一个有趣的功能是禁用键盘助手。 如果您使用的是Fastlane,则可以创建新的专用通道,从而禁用所有人的键盘助手。

要安装这种宝石使用:

[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 }"