web-dev-qa-db-ja.com

XCUIElementツリーをどのように見ることができますか?

背景:

XCodeGMを使用したiOS9.0でのUIレベルのテストを実験しています。

質問:

XCode GMに、アクセス可能な要素とそれらの関係の「ツリー」を表示できるコマンドはありますか?Appiumの「page」コマンドに似たものはありますか?

理想的には、選択/操作に使用できる要素のリストを提供するコマンドをデバッガーで実行できるはずです。現在、単一のXCUIElementでdebugDescriptionを使用できますが、それはその要素の情報のみを提供します。

17
Joe Susnick

ツリーを表示するブレークポイントを設定します...デバッガータイプで:

po print(XCUIApplication().debugDescription)

これにより、XCUITestingがアクセスできるすべてのものが出力されます。それをテストに投入することもできます。

func testTreeExample() {
  XCUIApplication().buttons["login"].tap()
  print(XCUIApplication().debugDescription)
  XCUIApplication().buttons["next"].tap()
  print(XCUIApplication().debugDescription)
}

何かを見つけるのに問題がある場合は、何かをした直後にアプリが見ているものを自動的に印刷することができます。

22
h.w.powers

これはまさにあなたが求めているものではありませんが、XcodeのAccessibility Inspectorを使用すると、要素が何であるかという観点からビュー階層を簡単に確認できます。識別子を介してアクセスできます。 (注:重要なのは、IBのアクセシビリティパネルの「ラベル」ではなく、「識別子」フィールドです。):

Xcode 7.2で、Xcode-> Open Developer Tool-> Accessibility Inspectorを開きます。 (システム環境設定で実行するには、アプリにアクセス許可を与える必要がある場合があります。)次に、XcodeからiOSアプリを起動し、SIMULATORの任意のUI要素にカーソルを合わせます。要素の種類、説明、階層などに関する包括的な情報が表示されます。

UIアクションを記録し、出力が正しく表示されない場合は、ツールを使用して、追加、変更、または削除する必要のあるアクセシビリティの説明を特定してください。 (UIテストハーネスを介して、深く埋め込まれたUISegmentedControlを変更するために数日を費やしましたが、アクセシビリティインスペクターツールの使用方法を理解すると、問題が明らかになりました。)

すばらしいヒントをくれたshinobicontrols.comの人々に感謝します!

11
Debo

メニューバーから選択することをお勧めします:デバッグで実行している場合は、[デバッグ]> [デバッグの表示]> [ビュー階層のキャプチャ]を選択します。ビューを視覚的に表現する方法だけでなく、左側のデバッグナビゲーターにも階層が表示されます。これは、UIテストの観点と1対1ではないかもしれませんが、非常に役立つ場合があります。お役に立てば幸いです。

4
Nick McConnell

Appiumがこれを行う方法は、 Facebook WebdriverAgent を使用することです。私の知る限り、彼らがそれを行う方法は、基本的に、ルートアプリケーション要素から始まり、各子に関する情報を収集してから、繰り返します。

0
TinyTimZamboni