XcodeでUItestを生成しようとしています。 UIviewをスワイプしようとすると、エラーが発生します:
Timestamped Event Matching Error: Failed to find matching element
これは、UIViewをタップしようとした場合にも発生します。
通常、この問題は、記録する要素の親要素がisAccessibilityElement = trueに設定されている場合に発生します。一般に、子要素にアクセスするには、親要素をfalseに設定する必要があります。たとえば、ビュー内にUILabelがある場合は、ビューのアクセシビリティをfalseに設定し、UILabelのtrueに設定する必要があります。
Xcode 9.3で、これが明らかに問題である場合、私がしたことは次のとおりです。
私は時々この問題に遭遇しました。 DerivedDataからアプリのディレクトリを削除すると役立つようです。
新しいテストを記録するための解決策はまだないと思います。ただし、既に存在するテストで拡張機能強制タップを使用する場合は機能します。
使用例:
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()
}
元の投稿はこちらで確認できます。
Xcode UIテスト-UIテストの失敗-検索フィールドの「キャンセル」ボタンをタップしたときに(AXアクションによって)表示されるまでスクロールできませんでした
私のために働いた解決策は、オブジェクトを異なる方法で識別することでした。
Xcode 8では、以下を使用できました。
XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()
Xcode 9では、この質問に記載されているエラーが発生しました。うまくいきましたが、次のものを使用してしまいました(元のオプションよりもひどいです)
XCUIApplication().cells.element(boundBy: 1).tap()