在iOS中使用地图视图运行UI测试
您应该模拟一个位置以确保可靠的测试
创建gpx文件
转到Xcode -> File -> New -> GPX File
看起来像
奥斯陆S
2017-05-31T14:55:37Z
奥斯陆S
2017-05-31T14:55:40Z
gpx
文件非常强大,因为它允许您指定具有不同移动速度的路线。
提供一个或多个包含纬度/经度对的航点。 如果您提供一个
航点,Xcode将模拟该特定位置。 如果您提供多个路标,
Xcode将模拟访问每个航点的路线。(可选)为每个航路点提供时间元素。 Xcode将插补运动
以每个航点之间经过的时间为基础的速度。 如果您不提供
时间元素,则Xcode将使用固定的速度。 航点必须按时间升序排列。
使用gpx文件
- 在应用程序目标而非UITests目标中声明
gpx
文件。 转到您的app scheme -> Run -> Options
- 转到
Simulator -> Debug -> Location -> Custom Location
然后选择相同的位置,以确保确定。 它不必相同,但是我看到没有Custom Location
,它在UITests
中UITests
让地图= app.maps.element(boundBy:0)
let谓词= NSPredicate(格式:“ label CONTAINS'City Hall'”)
让cityHall = map.otherElements.matching(predicate).element(boundBy:0)//等待地图完成加载和缩放
等待(用于:cityHall,超时:2)
XCTAssertTrue(cityHall.exists)
wait
功能来自#44
您需要指定accessibilityIdentifier
,例如
类MyPin:MKAnnotationView {
覆盖func didMoveToSuperview(){
super.didMoveToSuperview()accessibilityIdentifier =“ myPin”
}
}
然后查询该图钉。 并不是说它不在map
,而是在app
设pin = app.otherElements.matching(identifier:“ myPin”)。element(boundBy:0)
XCTAssertTrue(pin.exists)
accessibilityIdentifier
来自UIAccessibilityIdentification
协议。 您不应该使用accessibilityLabel
,请参阅kif-framework / KIF#243
鉴于accessibilityLabel是可访问性屏幕阅读器实际使用的朝外字符串(并且应本地化为设备用户的语言),Apple现在提供了专门用于UI自动化的备用属性(iOS 5+)。
原始故事https://github.com/onmyway133/blog/issues/45