我正在尝试创建一个XCUITest,我想在其中验证iOS的状态栏是否为:
- 隐藏;或
- 可见
但我找不到它…例如:
func testExample() throws {
let app = XCUIApplication()
app.launch()
let statusBar1 = app.descendants(matching: .statusBar)
let statusBar2 = app.statusBars.element(boundBy: 0)
}
当在控制台中执行po statusBar1
时,我得到一个空结果:
Find: Target Application 'com.domain.TestStatusBar'
↪︎Find: Descendants matching type StatusBar
有找到它的线索吗?
谢谢!
它现在可以作为跳板后代访问:
class Springboard {
static let shared = XCUIApplication(bundleIdentifier: "com.apple.springboard")
static var statusBar: XCUIElement {
// There are always two statusBars,
// but only one of them is accessible when we need to tap it
if XCUIDevice.shared.orientation.isPortrait {
return Springboard.shared.statusBars.firstMatch
}
else {
return Springboard.shared.statusBars.element(boundBy: 1)
}
}
}
从iOS 12起,状态栏不再可以通过XCTest
访问,因为它是系统应用程序的一部分
如果您在iOS 11&下面,app.descendants(matching: .statusBar).element
应该具有预期的结果。
换句话说,您只能访问那些位于您自己的应用程序窗口中的XCUIElement
。
Credits*适用于XCTest