gpt4 book ai didi

ios - UITests-如何在 UITests 中获取当前语言

转载 作者:行者123 更新时间:2023-12-01 19:42:15 26 4
gpt4 key购买 nike

XCUIApplication *app = [[XCUIApplication alloc] init]; 
[app.buttons[@"login"] tap];

如上所示,在tests.m 文件中,我想通过字符串“login”获取登录按钮,但是,我的应用程序支持多语言。如何获取我的应用程序的当前语言。

下面的方法是我获取当前语言的方法。用户在我的应用程序的设置 View 中设置语言。我将当前语言存储在 NSUserDefaults 中。
+ (NSString*)currentLanguage 
{
NSUserDefaults *lanUser = [NSUserDefaults standardUserDefaults];
NSString *currentLanguage = [lanUser valueForKey:kCNOGASingularLanguage];
if([currentLanguage length]==0)
currentLanguage = kApplicationLanguageEnglish;
return currentLanguage;
}

最佳答案

将用户的语言存储在应用程序的 UserDefaults 中然后从你的 UITest 访问它是行不通的。您的应用程序和 UITest 作为单独的进程运行,这意味着您的 UITest 无法访问您的应用程序的 UserDefaults
有一个简单的解决方案:要独立于用户语言,您可以设置 accessibilityIdentifier在您的 UIButton 上然后通过 accessibilityIdentifier 访问按钮:

在您的应用程序中:

button.accessibilityIdentifier = @"login";

在您的 UITest 中:
[app.buttons[@"login"] tap];

可访问性标识符从不显示, VoiceOver也不会读取它,因此不必本地化。只要确保您使用的是 accessibilityIdentifier不是 accessibilityLabel .因为 accessibilityLabel将被 VoiceOver 读取对于残障用户,应该本地化。

替代品

如果您不能使用 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: "")
}

我写了一点 blog post关于这一点,有一些更多的细节。

关于ios - UITests-如何在 UITests 中获取当前语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com