0
(class=android.widget.LinearLayout,resource-id=settings_language_selection_toggle,index=1 ) 

      (class=android.widget.RelativeLayout,index=0)

      (class=android.widget.LinearLayout,resource-id=widget_frame, index=1)

            (class=android.widget.Switch,resource-id=switchWidget, index=0)

///////////// 以下の要素の階層表現を見ることができます

階層イメージ ビュー:

*** appium Android for java で以下のコードを書いてスイッチボタンに到達しようとしましたが、うまくいきませんでした

@AndroidFindBy(xpath ="new UiSelector().resourceId(\"com.idscan.mjcs.sample:id/settings_language_selection_toggle\").instance(1).getChildById(new UiSelector().className(\"android.widget.Switch\")
4

1 に答える 1

1

XPath 戦略で UiSelector 構文を使用しています。それが機能していない理由です。これを試してください:

@AndroidFindBy(uiAutomator = "resourceId(\"settings_language_selection_toggle\").childSelector(className(\"android.widget.Switch\"))")

ここでわかるように、一部のボイラープレートは省略new UiSelector().resourceId(...)できます。たとえば、 に簡略化できますresourceId(...)。もう 1 つ: ルート要素 (指定された resourceId を持つ LinearLayout) が見つかったら、.childSelector()メソッドを使用して階層内の子要素を見つけることができます。ネストは問題ではありません。

于 2020-05-23T13:51:57.013 に答える