Xcode 11 XCUITest一致するスナップショットの取得に失敗しました:メインウィンドウkAXErrorServerNotFoundの取得中にエラーが発生しました


21

Xcode 11でアプリをビルドし、XCUITestsのスイートを実行した後、次のように多くのランダムなエラーが発生します。

一致するスナップショットの取得に失敗しました:メインウィンドウkAXErrorServerNotFoundの取得中にエラーが発生しました

タイムアウトをどれだけ長くしても、問題は断続的に表示されます。UI階層のスナップショットに問題があるようです。テストはXcode 10で一貫して合格しています。

Xcodeを再インストールしました。すべてのシミュレータを削除しました。消去された派生データ。変更されたタイムアウト。Xcode 11.1からXcode 11.2.1にアップグレードされました。

ありがとう!

 


私が同じ問題に直面している場合でも、同じ問題の回避策はありましたか?
Samarth Kejriwal

回答:


9

Xcode 11.3でシンプルなUITestを実行しているときにマッチングに問題がありました。それを機能させるには、最初に貼り付ける必要がありました:XCUIApplication().activate()またはXCUIApplication().launch()


これは機能します。ありがとう
RJ168

この答えは進むべき道のようですが、それが何を意味するのか理解するのに問題がありますか?XCUIApplication()。activiate()またはXCUIApplication()。launch()をどこに入力すればよいですか?
チャーリーセリグマン

あなたのUIテスト関数の内部
ДенисГрищенко

0

私はXcode 11で同じ問題を経験しましたが、テストを停止するときに(または何らかの理由でテストがクラッシュした場合)、テストランナーが強制終了されないことに気付きました。テストを2回実行すると、新しいテストランナーが生成され、その時点で2人のランナーが同じアプリケーションを操作しようとしていたため、この非常に奇妙なエラーが発生しました。

私が次のことをしたことを証明するために:

  1. テキストビューに長いテキストを入力するUIテストを作成しました
  2. テストを実行し、テキストビューに数文あるときに手動で停止しました
  3. シミュレータでアプリを手動で開いた(テストを実行していない)
  4. テストが実行されていなくても、ランダムな文字がテキストビューに表示されることが確認されました。

回避策は、シミュレータを終了してから再度開き、すべてのプロセスが強制終了されていることを確認することでした。これで問題が解決することを願っています


洞察をありがとう!あなたがこれを言うと、それは私が観察したものと一致します。残念ながら、元の投稿で言ったように、すべてのシミュレータを削除しようとしました。これらのテストは、ローカルとCIシステムの両方でビルドの一部として実行されます。とにかくこのプロセスを自動化することを知っていますか?
Luke Street

私たちがCIシステムでやったことは、テストスイートを実行する前にシミュレータを明示的に強制終了することでした。たとえば、を実行killall "Simulator" 2> /dev/null; xcrun simctl erase allしたり、fastlaneを使用している場合は、スキャンにシミュレータをリセットするオプションがあります。
erudel

0

別のマシンを使用しています。私の古いMacでは、このエラーがずっと頻繁に発生します。私の推測では、古いMacには特定のXCUITestを正しく実行するために必要なメモリがありません。


0

Xcode 11.1で時々問題に遭遇します。問題はUI要素を待機しているときに発生し、特にテスト中にWebビューが表示されることがわかりました。問題が発生したとき、私はを使用していたXCUIElement.waitForExistence(timeout:)か、期待していましたNSPredicate(format: "exists == true")NSPredicate(format: "hittable == true")問題で期待値を使用するように変更したときはなくなったようですが、理由はわかりません。2つの属性の違いは、テーブルビューのオフスクリーンセルなどのオフhittableスクリーンエレメントをexists検出しながら、オンスクリーンエレメントのみを検出することです。

expectation(for: NSPredicate(format: "hittable == true"), evaluateWith: element, handler: nil)
waitForExpectations(timeout: 60, handler: nil)

0

Xcode 11でも同様の問題がありました。

多くのページで同じアクセシビリティ識別子を持つことが許可される前に、それが判明しました。

ただし、新しいモーダルプレゼンテーションスタイルを使用する場合は、競合を回避するために、ページ内で異なる識別子を使用する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.