我正在开发用于 Fastlane 屏幕截图自动化的 XCUITest。以下所有代码在每个 iPhone 模拟器上都可以正常工作。这只是iPad的问题。
启动应用程序后,我处理权限,然后打开一个使用条款对话框:
每次我到达检查复选框的步骤(之后出现一个接受按钮)时,UITest 都会崩溃并出现以下错误:
Not hittable: Switch, 0x600000397010, traits: 9007345283760129, label: 'termsOfUseAcceptedCheckbox', value: 0
这是处理程序的代码:
func handleTermsOfUse() {
RunLoop.current.run(mode: RunLoopMode.defaultRunLoopMode, before: NSDate(timeIntervalSinceNow: 10) as Date)
let termsOfUseAcceptedCheckbox = app.switches["termsOfUseAcceptedCheckbox"]
self.waitForElementToAppear(element: termsOfUseAcceptedCheckbox, timeout: 40)
if(termsOfUseAcceptedCheckbox.exists) {
termsOfUseAcceptedCheckbox.isAccessibilityElement = true
termsOfUseAcceptedCheckbox.tap()
}
let termsOfUseAcceptedButton = app.buttons["termsOfUseAcceptedButton"]
self.waitForElementToAppear(element: termsOfUseAcceptedButton, timeout: 40)
if(termsOfUseAcceptedButton.exists) {
termsOfUseAcceptedButton.isAccessibilityElement = true
termsOfUseAcceptedButton.tap()
}
}
这是调用该方法的部分:
override func testApp() {
super.testApp()
snapshot("01splashScreen")
//self.handlePermission()
self.handleTermsOfUse()
sleep(5)
snapshot("02index")
}
我不知道为什么这只发生在iPad上并且在 iPhone 上运行良好。我尝试了一种forceTap()
方法,但没有成功。
func forceTapElement() {
if self.isHittable {
self.tap()
}
else {
let coordinate: XCUICoordinate = self.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0))
coordinate.tap()
}
我希望有人知道如何让它在 iPad 模拟器上运行。