gpt4 book ai didi

iOS UITests NSLocalizedString 不工作

转载 作者:搜寻专家 更新时间:2023-11-01 07:10:58 25 4
gpt4 key购买 nike

我正在尝试本地化我的 UITests 以使用其他语言(目前使用 Snapshot 来自动截屏,所以这就是我需要它工作的原因)。

我现在的主要问题是 IQKeyboardManager 中的“完成”按钮.

在英语中,我有以下代码并且工作正常:

app.toolbars.buttons["Done"].tap()

输入文本后点击完成按钮。

在西类牙语中,该按钮称为“确定”。看起来它是从一些默认的 UIKit 本地化字符串或类似的东西中获取的。

我尝试在我的 UITest es.lproj 文件夹中添加一个 .strings 文件,并将 "UIBarButtonSystemItem.Done"= "OK"; 放入其中。

我也改成了:

app.toolbars.buttons[NSLocalizedString("UIBarButtonSystemItem.Done", bundle: Bundle.main, value: "Done", comment: "")].tap()

但这没有用。始终使用“完成”。

总是报错:

No matches found for "Done" Button.

我也试过:

app.toolbars.buttons[NSLocalizedString("UIBarButtonSystemItem.Done", comment: "")].tap()

这导致了一个错误:

No matches found for "UIBarButtonSystemItem.Done" Button.

看来我的 .strings 文件不适用于我的 UITest。关于如何让它发挥作用的任何想法?

最佳答案

我创建了这个支持英语和西类牙语的小项目。通过在方案的配置中切换,也可以使用两种不同的语言运行测试

enter image description here

这就是测试的构建方式

func testExample() {
let greeting = localizedString(key: "Greetings.Hello")
XCTAssert(XCUIApplication().staticTexts[greeting].exists, "Expected \"\(greeting)\" label to exist")
}

它使用以下函数来获取翻译

func localizedString(key:String) -> String {
let bundle = Bundle(for: LocalizationUITests.self)
let deviceLanguage = Locale.preferredLanguages[0]
let localizationBundle = Bundle(path: bundle.path(forResource: deviceLanguage, ofType: "lproj")!)
let result = NSLocalizedString(key, bundle:localizationBundle!, comment: "") //
return result
}

这是您可以看到它工作的项目:https://github.com/TitouanVanBelle/LocalizationUITests

关于iOS UITests NSLocalizedString 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959298/

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