【问题标题】:Xcode 14 , XCUITests - Tap is not working for WebView default done buttonXcode 14,XCUITests - Tap 不适用于 WebView 默认完成按钮
【发布时间】:2022-11-07 23:46:21
【问题描述】:

我们已经开始采用新版本的 Xcode 14,并且我们看到许多测试失败。许多测试失败主要是那些在应用程序中具有 Web 视图的失败。在尝试了所有不同的选择之后,我们无法点击完成按钮;这是我们在应用程序中打开 Web 视图时的默认按钮。

请列出您为重现该问题所采取的步骤:我们的测试正在尝试点击 Web 视图内的完成按钮并看到错误(浏览器的默认完成按钮)。我们可以检查返回 true 但无法点击的按钮是否存在。详见附件

这肯定是 Xcode 14 的错误。我还测试了以前版本的 Xcode 13.4.1 并没有看到任何错误

处理 webview 完成按钮的任何替代方法

【问题讨论】:

  • 您是否检查过是否有任何 browsers 元素?也许这是一个webViews 元素而不是browsers?你能把那个时候的元素树附加到问题上吗?

标签: ios xcode xctest xcuitest xcode14


【解决方案1】:
extension XCUIApplication {

    func tapCoordinate(at point: CGPoint) {
         let normalized = coordinate(withNormalizedOffset: .zero)
         let offset = CGVector(dx: point.x, dy: point.y)
         let coordinate = normalized.withOffset(offset)
         coordinate.tap()
     }

}

How to tap on a specific point using Xcode UITests 的帮助下

【讨论】:

    【解决方案2】:

    @Nish 回答很好,所以我添加了一些变化来获取按钮的坐标并点击它。 (注意:这适用于任何屏幕/模拟器大小,因为它不依赖于显式传递的 CGPoint)

    if let doneButton = app.buttons["Done"].waitAndHandleFailure(timeout: JourniTestConstants.asyncTimeout) {
            let doneCoordinates = app.coordinate(withNormalizedOffset: .zero).withOffset(.init(dx: doneButton.frame.midX, dy: doneButton.frame.midY))
            doneCoordinates.tap()
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多