作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.buttons[@"login"] tap];
+ (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";
[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: "")
}
关于ios - UITests-如何在 UITests 中获取当前语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627892/
我是一名优秀的程序员,十分优秀!