我想使用UITest使用自己的MKAnnotationView点按XCTestCase,因此我将mapView作为XCUIElement。我不知道如何从mapView中获取注释,我不想在屏幕上的位置上放置固定位置,因为它已经在各种设备上进行了测试。所以我被困在let mapView:XCUIElement = app.maps.elementBoundByIndex(0)
有任何想法吗?

最佳答案

要与地图注释交互,请使用otherElements属性引用的title

例如,在生产代码中,在MKAnnotation中设置标题。

class Annotation: NSObject, MKAnnotation {
    let coordinate: CLLocationCoordinate2D
    let title: String?

    init(title: String?, coordinate: CLLocationCoordinate2D) {
        self.title = title
        self.coordinate = coordinate
    }
}

let coordinate = CLLocationCoordinate2DMake(40.703490, -73.987770)
let annotation = Annotation(title: "BeerMenus HQ", coordinate: coordinate)
let mapView = MKMapView()
mapView.addAnnotation(annotation)

然后在测试中,您可以通过其title属性引用注释。
let app = XCUIApplication()
let annotation = app.maps.element.otherElements["BeerMenus HQ"]
annotation.tap()

关于ios - 用XCTestCase点按MKAnnotationView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37652399/

10-10 19:07