如何在XCUITest里使用坐标定位element
先定义点击函数tapCoordinate
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()
}
}
再写一个测试函数用于验证
func testClick(){
let app = XCUIApplication()
app.launch()
sleep(5)
let point = CGPoint(x: 328.0, y: 392.0)
app.tapCoordinate(at: point)
}
使用coordinate函数直接定位使用的是CGVector,无法直接定位到页面上的点,需要使用CGPoint才能定位。需要注意的是,CGPoint的xy值的类型是CGFLoat,传Float进去是不生效的。需要强制类型转换把Float转成CGFloat
配合app.debugDescription获得的UI树使用
运行testClick()可以看到代码自动点击屏幕上对应的内容
在测试的时候发现,如果使用了swipeUp()方法上滑页面,再使用tapCoordinate()点击,页面会在给point变量赋值的时候跳回上滑前的页面
解决办法:不定义point,直接传值到tapCoordinate里,如下
app.tapCoordinate(at: CGPoint(x: 328.0, y: 392.0))
浙公网安备 33010602011771号