我有一个简单的应用程序,有两个视图,一个主页和一个主页。我在主页上有一个按钮,可以通过如下逻辑进入主页:
.fullScreenCover(isPresented: $showingMain) {
MainView()
}
我正在编写一个基本的 Swift UI 测试,以按主页上的“开始”按钮,然后检查我是否在第二页(视图)上。当我运行测试时,在模拟器中我看到按钮被按下并且主视图出现。
但是,如果我尝试检查某个对象(例如在静态文本中),它只会在第一个视图上显示该对象。就好像状态没有以某种方式更新。我尝试等待几秒钟,但没有帮助。
有人有什么想法吗?
func testExample() throws {
let app = XCUIApplication()
app.launch()
app.buttons["Start"].tap()
XCTAssert(XCUIApplication().staticTexts["Back to home page"].waitForExistence(timeout: 2)) // FAILS
for staticText in app.staticTexts.allElementsBoundByIndex{
print(staticText.label) // SHOWS TEXT FROM FIRST PAGE
}
}
像往常一样,我在发帖后不久就解决了问题。我会在这里输入信息,以防万一有人遇到同样的问题。
我的主要问题是我使用的是 staticTexts[] 而不是buttons[]。改变它就解决了。然而,我的困惑是因为我在 staticText 中看到第一个视图中的字符串。
似乎如果您通过 fullScreenCover 进行转换,它仍然会包含第一个视图中的 staticText 项目,因为我猜它在技术上仍然在屏幕上。