【问题标题】:Setting up Simulator for Automated UITesting为自动化 UITesting 设置模拟器
【发布时间】:2017-09-05 05:50:35
【问题描述】:

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

我正在为 one 类似的模拟器这样做:

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

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

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-08
      • 2012-11-28
      • 1970-01-01
      相关资源
      最近更新 更多