【发布时间】:2022-01-07 17:07:58
【问题描述】:
对于 Android 世界,我们可以通过以下方式点击任何位置:
val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
device.click(x, y)
上面的 x 和 y 可以从 Pixelmator 获得,例如:
例如,键a的坐标应该是x=100和y=1800(来自Pixelmator的标尺)。
根据tapCoordinate,我们可能会在iOS中做类似的事情:
func tapCoordinate(at xCoordinate: Double, and yCoordinate: Double) {
let normalized = app.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let coordinate = normalized.withOffset(CGVector(dx: xCoordinate, dy: yCoordinate))
coordinate.tap()
}
但它没有按预期工作,我想知道我们是否可以点击全局屏幕的x 和y 的一些点?
【问题讨论】:
-
当我点击
tapCoordinate的链接时,我看到它位于关于编写 UI 测试的线程中。因此,我收集到您正在尝试实现一个 UI 测试帮助器功能,该功能可让您将点击驱动到特定的屏幕位置。您应该编辑您的问题以说明这一点。不要让你的读者猜测你想要做什么。 -
我注意到的一件事是您似乎在使用 pixel 坐标。你不应该那样做。 Apple 使用点(72 英寸)作为其坐标系。带有视网膜显示器的设备每个点可能有 2 或 3 个像素。您需要计算出您的测试设备每点的像素数,并将像素坐标除以该值以获得以点为单位的坐标,并使用这些点值而不是像素值。