以下是我录制的XCTest
let app = XCUIApplication()
let tablesQuery = app.tables
tablesQuery.staticTexts["Video"].tap()
tablesQuery.staticTexts["\tWindowed"].tap()
app.buttons["Launch"].tap()
app.buttons["Popout Video"].tap()
app.children(matching: .window).element(boundBy: 0).children(matching: .other).element(boundBy: 1).tap()
当我尝试运行测试时,最后一部分是:
app.children(matching: .window).element(boundBy: 0).children(matching: .other).element(boundBy: 1).tap()
无法访问。它不会抛出任何错误,但最后一行代码不会被执行。
我尝试通过引用以下stackoverflow问题来解决问题: Xcode UI Tests can't find views that are added programatically
https://developer.apple.com/reference/uikit/uiview
但所有这些似乎都没有解决问题。任何帮助将不胜感激。
答案 0 :(得分:1)
有问题的线条非常脆弱。每次应用程序启动时,您的应用程序的视图可能并非始终以相同的顺序显示,具体取决于竞争条件,因此记录会话中记录的内容并不一定适用于应用程序的所有启动。您可能会发现代码实际上正在运行,但没有点击您期望的元素。
要使代码不那么脆弱,请在应用代码中向UIView添加辅助功能标识符,并使用otherElements
查询来查找UIView。
// app code
let view: UIView!
view.accessibilityIdentifier = "myAccessibilityIdentifier"
// UI test code
app.otherElements["myAccessibilityIdentifier"].tap()