7

Appiumを介してネイティブiOSアプリを使用しています。

私は次の構造を持っています:

UIAApplication ->
                  UIAWindow ->
                              UIATextBox
                              UIALabel
                  UIAWindow ->
                              SomethingElse

最初の UIAWindow を取得する方法を見つけました。そのウィンドウ内のすべての要素のリストを取得したいと考えています。それ、どうやったら出来るの?

UIATextBox と UIALabel を最初の UIAWindow から取得したいのですが、SomethingElse 要素では取得したくありません。

一般的に子要素のリストを作成するにはどうすればよいですか?

  @Test
  public void testListWindows() {
      List<MobileElement> windows = driver.findElementsByClassName("UIAWindow");
      List<MobileElement> elements = windows.get(0).?????
  }
4

2 に答える 2

7

あなたはほとんどそこにいます。最初の UIAWindow のすべての要素のリストが必要な場合に、すべての UIAWindows のリストが得られます。ワイルドカードで Xpath を使用することをお勧めします。

これにより、最初の UIAWindow の直接の子であるすべての要素が取得されます。

List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]/*");

これにより、最初の UIAWindow のすべての子、サブ子、サブ子などを取得できます。

List<MobileElement> elements = driver.findElements(MobileBy.xpath("//UIAWindow[1]//*");

追加のヒント: iOS 向けに自動化する場合、OS X にアクセスできることを意味すると思います。OS X では、Appium ドット アプリをインストールしてインスペクターを使用できます。インスペクターは、xpath クエリをコードに組み込む前にテストするための優れたツールです。

于 2015-12-14T23:06:48.943 に答える
1

また、Appium の iOS アプリのクラスでテキストフィールドとラベルを見つけることもできます。findElementsByClassName メソッドは、そのクラスに一致する現在の画面上のすべての要素を返します。

List<MobileElement> textFields = driver.findElementsByClassName("UIATextField");
MobileElement textField = textFields.get(0);

List<MobileElement> labels = driver.findElementsByClassName("UIAStaticText");
MobileElement label = labels.get(0);
于 2016-08-10T00:47:31.900 に答える