如何在 Xcode 模拟器上点击特定点
Posted
技术标签:
【中文标题】如何在 Xcode 模拟器上点击特定点【英文标题】:How to tap on a specific point on Xcode simulator 【发布时间】:2018-11-07 09:45:48 【问题描述】:我使用 swift 的 UI 测试,我需要能够点击我的应用程序上的特定点。我遵循了How to tap on a specific point using Xcode UITests 的答案,它非常适合在 iPad 上进行测试。然而,当在模拟器上做同样的事情时,什么也没有发生。没有错误,程序只是像我在按某物,但没有特别的任何东西,并且由于没有正确的信息,程序无法继续执行。
这可能是本地问题吗?如果没有,我该怎么做才能点击模拟器上的特定坐标?
【问题讨论】:
(1) 我相信简短的回答是 - 你不能。是模拟器!要“点击”你“点击”。如何点击真实设备上的特定点?简短的回答?你没有。您记录被点击的特定点。与模拟器相同。其他任何事情都是不合逻辑的。 (2) 也就是说,您究竟想做什么?测试什么?事实上,你的问题有点模糊。如果你想做的只是测试一些代码,其中一个特定的点被“点击”——这就是你所说的——然后“硬编码”它! 【参考方案1】:好吧,您不能只点按屏幕。你必须点击一些东西。
最简单的做法是使用应用程序中的元素和来自 Apple 的方法 coordinate(withNormalizedOffset:)
进行点击。
创建一个方法,这将具有输入参数元素(您要点击)和偏移量(点,您要点击)。像这样的:
func tap(on element: XCUIElement, xOffset: Double, yOffset: Double)
let coordinate = element.coordinate(withNormalizedOffset: CGVector(dx: xOffset, dy: yOffset))
if element.waitForExistence(5)
coordinate.tap()
然后,您可以通过调用此方法并为其提供元素来点击测试应用中的任何元素。
F.e.:
您想使用0.8
和0.5
偏移量来点击应用程序本身的某个点:
tap(on: XCUIApplication(), xOffset: 0.8, yOffset: 0.5)
【讨论】:
以上是关于如何在 Xcode 模拟器上点击特定点的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 fastlane 重置特定 Xcode 版本的模拟器?