web-dev-qa-db-ja.com

タイムスタンプ付きイベントマッチングエラー:一致する要素が見つかりませんでした

XcodeでUItestを生成しようとしています。 UIviewをスワイプしようとすると、エラーが発生します:

Timestamped Event Matching Error: Failed to find matching element

エラーウィンドウ

enter image description here

これは、UIViewをタップしようとした場合にも発生します。

78
shay

スワイプ元のUIViewオブジェクトに対して「アクセシビリティ」オプションが有効になっていることを確認する必要があります。次に例を示します。

enter image description here

46
AmitW

通常、この問題は、記録する要素の親要素がisAccessibilityElement = trueに設定されている場合に発生します。一般に、子要素にアクセスするには、親要素をfalseに設定する必要があります。たとえば、ビュー内にUILabelがある場合は、ビューのアクセシビリティをfalseに設定し、UILabelのtrueに設定する必要があります。

4
Souma Paul

Xcode 9.3で、これが明らかに問題である場合、私がしたことは次のとおりです。

  • Xcodeを終了
  • シミュレーターの設定をリセットします(ハードウェア->すべてのコンテンツと設定を消去します)
  • シミュレーターを終了します
  • 現在のアプリの派生データを削除します
  • Xcodeを再起動する
  • もう一度録音してみてください-今回はうまくいきました。
3
commanda

私は時々この問題に遭遇しました。 DerivedDataからアプリのディレクトリを削除すると役立つようです。

2
Dave L

新しいテストを記録するための解決策はまだないと思います。ただし、既に存在するテストで拡張機能強制タップを使用する場合は機能します。

使用例:

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アクションによって)表示されるまでスクロールできませんでした

2
Sophy Swicz

私のために働いた解決策は、オブジェクトを異なる方法で識別することでした。
Xcode 8では、以下を使用できました。

XCUIApplication().tables.cells["Camera Roll"].buttons["Camera Roll"].tap()

Xcode 9では、この質問に記載されているエラーが発生しました。うまくいきましたが、次のものを使用してしまいました(元のオプションよりもひどいです)

XCUIApplication().cells.element(boundBy: 1).tap()
0