1

我正在开发用于 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 模拟器上运行。

4

0 回答 0