在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 ,它在UITestsUITests
 让地图= 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