UITest tap 在使用 iPhone X 的 iOS 12.4 上不起作用(适用于 iPhone 7)

Posted

技术标签:

【中文标题】UITest tap 在使用 iPhone X 的 iOS 12.4 上不起作用(适用于 iPhone 7)【英文标题】:UITest tap not working on iOS 12.4 using iPhone X (works on iPhone 7) 【发布时间】:2021-02-15 11:22:46 【问题描述】:

这可能与 ios12.4(实际上也是 12.2)中的 SafeArea 问题有关吗? 我在 UITests 期间使用以下函数点击视图。

func tapAtLocation(_ element: XCUIElement) -> Self 
    let loc = element.coordinate(withNormalizedOffset: .init(dx: 0, dy: 0))
    loc.tap()
    return self

我尝试点击特定图像的位置。 所以我得到图像并触发点击

let myImage = App.images[myImageViewIdentifier].firstMatch
tapAtLocation(myImage)

它适用于新的 iOS 版本,也适用于 iPhone 7 iOS 12.4,但不适用于 iPhone X。 我需要它在 iPhone X 上工作 :)

你建议我做什么?也许你有一个很好的调试技巧来查看它试图点击的确切位置?

【问题讨论】:

【参考方案1】:

好的!经过一天的失败和重试,一个简单的解决方案成功了!

func tapAtLocation(_ element: XCUIElement) -> Self 
    let loc = element.coordinate(withNormalizedOffset: .init(dx: 0.5, dy: 0.5))
    loc.tap()
    return self

这适用于所有装有 iOS 12.4 和 13+ 的设备(iPhone X、7 和 11)

【讨论】:

以上是关于UITest tap 在使用 iPhone X 的 iOS 12.4 上不起作用(适用于 iPhone 7)的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode UITest 中使用 typeText 时,第二个单词总是消失

如何使用 UITest 和 Swift 3 单击编辑菜单

将光标放在 UITest 下 UITextView 的末尾

打印到 Xcode (XCTest) UITest 报告

Xamarin.UITest 与 OS X 10.15 不兼容?

在 iPhone 11 上,使用自定义视图,为啥我的 Tap Recognizer 或 UIButton 在视图的顶部没有响应但在视图的下部有效