Description
如上所述,在tests.m文件中,我希望通过字符串“ login”获得登录按钮,但是,我的应用程序支持多语言。如何获取我的应用程序的当前语言。
以下方法是我如何获取当前语言的方法。用户在我的应用的设置视图中设置语言。我将当前语言存储在NSUserDefaults中。
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.buttons[@"login"] tap];
答案 0 :(得分:2)
在应用程序的excel_data$Date <- as.POSIXct(excel_data$Date,
origin="1899-12-30",
tz="GMT")
中存储用户的语言,然后从UITest访问该语言将无法正常工作。您的应用和UITest作为单独的进程运行,这意味着UITest无法访问应用的UserDefaults
有一个简单的解决方案:要独立于用户语言,您可以在UserDefaults
上设置accessibilityIdentifier
,然后通过UIButton
访问按钮:
在您的应用中:
accessibilityIdentifier
在您的UITest中:
button.accessibilityIdentifier = @"login";
accessibilityIdentifier永远不会显示,[app.buttons[@"login"] tap];
也不会读取它,因此不必进行本地化。只要确保您使用的是VoiceOver
,然后不使用accessibilityIdentifier
。因为accessibilityLabel
对于残障用户将由accessibilityLabel
读取,因此应进行本地化。
替代
如果您不能使用VoiceOver
查询UI元素,则可以在UITests中使用应用程序的accessibilityIdentifier
文件来获取本地化的按钮标题(在这种情况下):
首先将您的LocalizableStrings
文件添加到UITest目标,然后通过UITest捆绑包访问该文件以获取本地化的字符串(为此我使用了一些辅助方法):
Localizable.strings
不久前,我为此写了一点blog post,并提供了更多详细信息。