Сохранение языка пользователя в UserDefaults
вашего приложения и последующий доступ к нему из вашего UITest не будет работать.Ваше приложение и UITest работают как отдельные процессы, а это значит, что ваш UITest не может получить доступ к UserDefaults
* 1004 вашего приложения. Существует простое решение: чтобы стать независимым от языка пользователя, вы можете установить
accessibilityIdentifier
наВаш
UIButton
, а затем получить доступ к кнопке через
accessibilityIdentifier
:
В вашем приложении:
button.accessibilityIdentifier = @"login";
В вашем UITest:
[app.buttons[@"login"] tap];
AccessibilityIdentifier никогда не отображается, и VoiceOver
также не читает его, поэтому его не нужно локализовать.Просто убедитесь, что вы используете accessibilityIdentifier
и , а не accessibilityLabel
.Потому что accessibilityLabel
будет прочитано VoiceOver
для пользователей с ограниченными возможностями и должно быть локализовано.
ALTERNATIVE
Если вы не можете использовать accessibilityIdentifier
для запроса элементов UIвы можете использовать файл LocalizableStrings
вашего приложения в ваших UITests, чтобы получить локализованный заголовок кнопки (в данном случае):
Сначала добавьте ваш Localizable.strings
файл к вашей цели UITest, а затем получите доступ к файлу через комплект UITest.чтобы получить локализованные строки (я использую небольшой вспомогательный метод для этого):
func localized(_ key: String) -> String {
let uiTestBundle = Bundle(for: AClassFromYourUITests.self)
return NSLocalizedString(key, bundle: uiTestBundle, comment: "")
}
Я написал небольшое сообщение в блоге об этом некоторое время назад с некоторыми подробностями.