Xcode'da bir UItest oluşturmaya çalışıyorum. UIview'u kaydırmaya çalıştığımda bir hata alıyorum:
Timestamped Event Matching Error: Failed to find matching element
Bu, UIView'a dokunmaya çalışırsam da olur.
Xcode'da bir UItest oluşturmaya çalışıyorum. UIview'u kaydırmaya çalıştığımda bir hata alıyorum:
Timestamped Event Matching Error: Failed to find matching element
Bu, UIView'a dokunmaya çalışırsam da olur.
Yanıtlar:
fastlane
Bir tableView ekran görüntülerini almak için bu gönderiyi yararlı buldum . stackoverflow.com/a/39331154/4475605
isAccessibilityElement = true
Genellikle bu sorun, kaydetmek istediğiniz öğenin üst öğesi, ErişilebilirlikElement = true olarak ayarlandığında görülür. Genel olarak, alt öğeye erişmek için ana öğeyi yanlış olarak ayarlamanız gerekir. Örneğin: bir görünümün içinde bir UILabeliniz varsa, erişilebilirlik görünüm için false ve UILabel için true olarak ayarlanmalıdır.
Görünüşe göre bunun hala bir sorun olduğu Xcode 9.3'te yaptığım şey şuydu:
Yeni bir test kaydetmek için henüz bir çözüm olduğunu düşünmüyorum. Ancak, zaten var olan bir testle dokunmaya zorlayan bir uzantı kullanıyorsanız çalışır.
Kullanım örneği:
extension XCUIElement {
func forceTapElement() {
if self.hittable {
self.tap()
}
else {
let coordinate: XCUICoordinate = self.coordinateWithNormalizedOffset(CGVectorMake(0.0, 0.0))
coordinate.tap()
}
}
}
func testSomethingWithCells() {
let app = XCUIApplication()
let cells = app.tables.cells
sleep(1)
cells.elementBoundByIndex(0).forceTapElement()
}
Orijinal gönderiyi buradan kontrol edebilirsiniz:
Kendim için işe yarayan bir çözüm, nesneyi farklı bir şekilde tanımlamaktı.
Xcode 8'de aşağıdakileri kullanabildim:
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
Xcode 9 ile bu soruda bahsedilen hatayı aldım. Aşağıdakiler kullanılarak sona erdirildi, bu da işe yaradı (orijinal seçenekten daha titiz olsa da)
XCUIApplication().cells.element(boundBy: 1).tap()