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

时间:2018-12-05 08:18:36

标签: ios objective-c xctest xcode-ui-testing

Description

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

以下方法是我如何获取当前语言的方法。用户在我的应用的设置视图中设置语言。我将当前语言存储在NSUserDefaults中。

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

1 个答案:

答案 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,并提供了更多详细信息。

相关问题