может ли appium запускать симулятор ios по UDID

Добрый день!

Подскажите плиз:

  • можно ли сделать так чтоб appium коннектился к запущенному ios симулятору. Суть в чем, хочу попробовать использовать FBSimulatorControl - GitHub - facebook/idb: idb is a flexible command line interface for automating iOS simulators and devices, а там сначала надо стартовать симулятор, а потом уже с опиумам работать, ну это как я разобралась, если есть у кого-то опыт - может подскажите
  • можно ли запускать именно симулятор по UDID, когда допустим в xcode установлено несколько одинаковых симуляторов и запустить необходимый по UDID
  1. А почему нельзя? Я всегда стартую самостоятельно симулятор до запуска тестов.
  2. UDID для iOS симулятора и является названием девайса (например, iPhone 6). При этому Аппиум самостоятельно определит, какой симулятор использовать по версии iOS, которую Вы укажете в capabilities.

по поводу UDID, у меня допустим два симулятора, с одинаковым именем и ос, отличие только в B3E3B91D-CC2A-4F41-8E21-662CE12767E3
по поводу старта симулятора, а какие у вас настройки прописаны, у меня всегда стартует симулятор с запуском тестов

Насколько я знаю, Xcode не позволят установить больше одного девайса одного типа с одинаковыми версиями iOS.

С помощью скрипта:

open -a Simulator --args -CurrentDeviceUDID "${id}"

где ${id} и есть айдишник который Вы скинули. Его Вы можете найти в списке:

xcrun simctl list

Если нужный симулятор запущен, Аппиум должен его и использовать.

на счет нельзя установить два симулятора - с 7 версии xcode кажись уже можно установить

а на счет использовать запущенный симулятор, а в опиуме у вас какие настройки прописаны?

Скиньте, пожалуйста, аутпут команды

xcrun simctl list

или

instruments -s devices

и покажите дублирующиеся девайсы.

Что Вы имеет в виду под настройками? Используемые capabilities?

xcrun simctl list == Device Types == iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s) iPhone 5 (com.apple.CoreSimulator.SimDeviceType.iPhone-5) iPhone 5s (com.apple.CoreSimulator.SimDeviceType.iPhone-5s) iPhone 6 (com.apple.CoreSimulator.SimDeviceType.iPhone-6) iPhone 6 Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6-Plus) iPhone 6s (com.apple.CoreSimulator.SimDeviceType.iPhone-6s) iPhone 6s Plus (com.apple.CoreSimulator.SimDeviceType.iPhone-6s-Plus) iPad 2 (com.apple.CoreSimulator.SimDeviceType.iPad-2) iPad Retina (com.apple.CoreSimulator.SimDeviceType.iPad-Retina) iPad Air (com.apple.CoreSimulator.SimDeviceType.iPad-Air) iPad Air 2 (com.apple.CoreSimulator.SimDeviceType.iPad-Air-2) iPad Pro (com.apple.CoreSimulator.SimDeviceType.iPad-Pro) Apple TV 1080p (com.apple.CoreSimulator.SimDeviceType.Apple-TV-1080p) Apple Watch - 38mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-38mm) Apple Watch - 42mm (com.apple.CoreSimulator.SimDeviceType.Apple-Watch-42mm) == Runtimes == iOS 7.1 (7.1 - 11D167) (com.apple.CoreSimulator.SimRuntime.iOS-7-1) (unavailable, Mac OS X 10.11.5 is not supported) iOS 8.1 (8.1 - 12B411) (com.apple.CoreSimulator.SimRuntime.iOS-8-1) iOS 8.2 (8.2 - 12D508) (com.apple.CoreSimulator.SimRuntime.iOS-8-2) iOS 8.3 (8.3 - 12F70) (com.apple.CoreSimulator.SimRuntime.iOS-8-3) iOS 8.4 (8.4 - 12H141) (com.apple.CoreSimulator.SimRuntime.iOS-8-4) iOS 9.0 (9.0 - 13A344) (com.apple.CoreSimulator.SimRuntime.iOS-9-0) iOS 9.2 (9.2 - 13C75) (com.apple.CoreSimulator.SimRuntime.iOS-9-2) iOS 9.3 (9.3 - 13E230) (com.apple.CoreSimulator.SimRuntime.iOS-9-3) tvOS 9.2 (9.2 - 13Y227) (com.apple.CoreSimulator.SimRuntime.tvOS-9-2) watchOS 2.2 (2.2 - 13V143) (com.apple.CoreSimulator.SimRuntime.watchOS-2-2) == Devices == -- iOS 7.1 -- -- iOS 8.1 -- -- iOS 8.2 -- -- iOS 8.3 -- -- iOS 8.4 -- -- iOS 9.0 -- -- iOS 9.2 -- -- iOS 9.3 -- iPhone 4s (BE053D8C-B64E-4FD5-8E57-78835E0851B8) (Shutdown) iPhone 4s (33A7FB47-DE35-49E9-8D7F-68117C9D543E) (Shutdown) iPhone 5 (CDC4DDC1-7766-44B7-8A61-06D2BC49A123) (Shutdown) iPhone 5 (1698E05E-F17E-4C16-99A2-F6524FCB2E45) (Shutdown) iPhone 5 (BE3EF786-8ACC-44D6-8876-887F7DA0D512) (Shutdown) iPhone 5 (B3E3B91D-CC2A-4F41-8E21-662CE12767E3) (Shutdown) iPhone 6 (4A762572-1C13-4D1A-B274-BF7E26EFF849) (Shutdown) -- tvOS 9.2 -- Apple TV 1080p (F07B21C4-8B28-454D-95B1-7F9F148B1D00) (Shutdown) -- watchOS 2.2 -- Apple Watch - 38mm (C48BEB91-4B2E-455B-86F2-24417E03F55B) (Shutdown) Apple Watch - 42mm (424DBB78-B583-4187-B2BD-77B72252C7A5) (Shutdown) == Device Pairs ==

да, именно это, может у меня это из-за full reset

Скорее всего. При fullReset, Аппиум будет перезапускать симулятор, чтобы стартануть его в чистом состоянии.

Мои дефолтные капабилити для iOS нативных приложений вот такие:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(PLATFORM_NAME, Platform.get().toString());
capabilities.setCapability(BROWSER_NAME, EMPTY_STRING);
capabilities.setCapability(DEVICE_NAME, getUdid());
capabilities.setCapability(NO_RESET, true);
if (isRealDevice()) {
    capabilities.setCapability(UDID, getUdid());
}
capabilities.setCapability(PLATFORM_VERSION, version);
capabilities.setCapability(SEND_KEY_STRATEGY, SET_VALUE);
capabilities.setCapability(INTER_KEY_DELAY, 0);
capabilities.setCapability(IOSMobileCapabilityType.LAUNCH_TIMEOUT, getDefaultTimeout());
capabilities.setCapability(APP, appBundleId);

Это очень странно. Они у Вас все 3 рабочие?

да, вполне, но вот если я передаю опиуму имя девайса iPhone 5 и версия ос 9ю3, то тут он в расстеряности и не знает что запустить, потому и возник вопрос по запуску с id

Возможно, в этом и проблема. Как Вам удалось установить 3 симулятора одной версии?

xcrun simctl create ‘iPhone 5’ \com.apple.CoreSimulator.SimDeviceType.iPhone-5 \com.apple.CoreSimulator.SimRuntime.iOS-9-3
просто дело в том что пытаемся найти решение по распараллеливанию тестов под иос без использования грида,вот для этого и нужно

Вы правы, действительно можно создать еще инстансы.
Но похоже, Аппиум всегда использует первый найденный симулятор, который удовлетворяет условию - udid + version.

Я пока не находил решения распараллеливания Аппиум-тестов для iOS с одной машины, не используя виртуалку. Если у Вас получится, поделитесь, пожалуйста :slight_smile:

Дык давно уже есть решение, для реальных девайсов, обязательно надо указывать параметром к запуску appium-сервера путь к разным темповым папкам(параметр --tmp)
Вместе с гридом все прекрасно работает. Проверял на макбуке с подключенными девайсми в количестве 2-х штук, на последней версии appium

Я писал о симуляторах :slight_smile:

Тоже захотелось 7 симуляторов на mac mini :slight_smile:

На xcode 8 все должно работать “из коробки” и искать симулятор по udid:

На xcode<8 нужно немного “попилить”, так как при задании udid идет по флоу real device.
Entry point:

А сколько реальных устройств одновременно могут параллельно тесты гонять? (С гридом или без грида)

Гонял - 4 девайса Android и iOS