iOS系统如何通过x、y坐标实现屏幕指定位置点击操作?
iOS全局坐标点击实现方案
可以通过全局屏幕的x、y坐标点击指定点位,你之前的代码未生效是因为存在两个常见问题:
- 没有对Pixelmator测量得到的像素坐标和iOS原生的点坐标做缩放适配
- 坐标原点默认取的是app可显示区域的左上角,而非全局屏幕左上角,会被安全区域、刘海/灵动岛等区域的偏移影响
正确实现代码
func tapGlobalCoordinate(x: CGFloat, y: CGFloat) { // 将测量得到的像素坐标转为iOS用的点坐标,适配不同设备的@2x/@3x缩放比例 let screenScale = UIScreen.main.scale let targetPointX = x / screenScale let targetPointY = y / screenScale // 以全局屏幕左上角为坐标原点 let globalBase = XCUIApplication().coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0)) let targetCoordinate = globalBase.withOffset(CGVector(dx: targetPointX, dy: targetPointY)) targetCoordinate.tap() }
使用注意事项
- 你测量得到的按键
a像素坐标x=100、y=1800需要先除以对应测试设备的缩放因子再传入,比如iPhone 14系列为@3x,转换后点坐标为x≈33.33、y=600 - 如果需要点击app外的系统级区域(比如状态栏、控制中心),需要将XCUIApplication的目标改为系统桌面进程,示例:
let app = XCUIApplication(bundleIdentifier: "com.apple.springboard"),再进行坐标计算即可 - 普通沙盒内的app仅支持点击自身显示区域内的坐标,系统级全局点击需要额外的辅助功能权限或者越狱环境支持
内容的提问来源于stack exchange,提问作者pvd
相关产品推荐
相关产品推荐

