2016-11-13 10 views
4

iPad Pro 12.9インチでテストを実行すると、Xcode UIのテストコードがこのエラーで失敗します。すべてのiPhoneモデルとiPad Retinaの場合、エラーは表示されません。Xcode UIテストの失敗 - 無効なヒットポイントの計算

Assertion Failure: EasyTVUITests.m:81: UI Testing Failure - Computed invalid hit point (-1.0, -1.3) for Cell 0x600000377dc0: traits: 8589934592, {{411.0, -1373.0}, {813.3, 106.3}}

失敗したテストコード行は次のいずれかです。

[[app.tables[@"programs"].cells elementBoundByIndex:17] tap]; 

エラーが実際に何を意味し、そしてどのように私はそれをデバッグするのですか?ここで

はエラーに完全な実行アップである:

Tap Cell

Wait for app to idle 

Find the Cell 

    Snapshot accessibility hierarchy for com.[hidden] 

    Find: Descendants matching type Table 

    Find: Elements matching predicate '"programs" IN identifiers' 

    Find: Descendants matching type Cell 

    Find: Element at index 17 

    Wait for app to idle 

Synthesise event 

    Assertion Failure: EasyTVUITests.m:81: UI Testing Failure - Computed invalid hit point (-1.0, -1.3) for Cell 0x600000377dc0: traits: 8589934592, {{411.0, -1373.0}, {813.3, 106.3}} 

指数が17であることが重要ではありません - 私は、ランダムなセルを選択しようとしています。私は別の指標を試しましたが、何の違いもありませんでした。

視覚的には、iPad ProのバージョンがiPadの網膜バージョンと「間違っている」か、違って見えることはありません。

これはXcode 8.1で、iPadシミュレータはiOS 10.1を実行します。

+1

'app.buttons [" delete "]。tap()'が働いていないので(私の場合と同様に)、あなたが 'element.typeText(XCUIKeyboardKeyDelete)'にスワップすることができます。削除キーを送信するテキストフィールドなどを入力します。 – commscheck

答えて

2

エラーメッセージは、無効な座標でタップを実行しようとしていることを意味します。この場合、(-1.0、-1.3)は、画面の左上隅にあります。

ヒットしようとしているセルの位置が有効であるように見えます。そのx座標は正でy座標は負であり、目的のセルが垂直スクロール可能なビューで画面上にあることを示します。この場合、17番目のセルを手動でタップできることを確認することができますが、私はbugreport.apple.comでAppleにバグを報告する必要があります。

2

私のコードはiPad Retinaでスムーズに動作していましたが、iPad Pro(12.9インチ)では全く同じ問題が発生しました。

XCUIElement's isHittableテストを失敗した行の前のどこかで使用していますか? 何らかの理由で、私のコードで、このテストをiPad Pro(12.9インチ)で実行すると、YESが返されますが、他のすべてのシミュレータではNOが返されます。

異なるシミュレータで実行されたコンソール出力を比較してみました。 お手伝いをしてください。

2

私もこの種の問題がありました。無効なヒットポイントですが、画面上に表示された要素のためにスクロールの問題はありません。

私はこのページhttp://samwize.com/2016/02/28/everything-about-xcode-ui-testing-snapshot/

に説明力タップ方式を使用してiPadの網膜とiPad Proの9.7インチのためにそれを修正するために管理しかしisHittableプロパティがそれに本当だったので、それはiPadのプロ12.9inchに取り組んでいませんでした。

最終的には、ポップオーバーが表示されている間にメインビューの要素をタップしようとしていたため、実際にはヒット可能でしたが、xcuitestsはそうではないと想定していました。ダミーのforceTapアクションを実行して、以前は失敗していたタップアクションを実行する前に強制的にポップオーバーを解除します。 3種類のすべてのiPadでうまく動作します。

+0

私は自分の答えが質問への直接的な反応ではないことを知っていますが、ヒットポイントの問題がある人に役立つと思います。 –

関連する問題