我正在为我的应用编写 UI 测试,该应用使用 UIWebView
作为其内容。当按下 web View 中的按钮时,它会编写如下测试用例:
func testExample() {
let app = XCUIApplication()
app.staticTexts["Log In"].tap()
}
这里的问题是,如果应用程序处于不同的本地化版本(例如“de-DE”),则带有文本“登录”的按钮不存在。相反,它是“Anmelden”。 我尝试过以下方法,但都不起作用:
可本地化的字符串版本:
func testExample() {
let name = NSLocalizedString("Log In", comment: "")
let app = XCUIApplication()
app.staticTexts[name].tap()
}
和
public class Titles {
var homeScreenLogIn = "Log In"
}
public class TitlesDE: Titles {
override init() {
super.init()
homeScreenLogIn = "Anmelden"
}
}
...
func testExample() {
titles = TitlesDE()
let name = titles.homeScreenLogIn
let app = XCUIApplication()
app.staticTexts[name].tap()
}
UI Testing failure - Multiple matches found:
问题是我似乎无法弄清楚如何将数据转储到调试/测试输出,因为 print()
似乎不起作用。
最佳答案
您应该使用所有 UIKit
对象都具有的 accessibilityIdentifier
属性,因为此字符串未本地化,它仅用于 UI 自动化。
也就是说,当您使用 UIWebView
的内容时,这似乎不是一个简单的解决方案。
关于ios - 使用本地化的 app.staticTexts 进行 UI 测试 (XCTest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35483844/