尝试通过 AndroidFindby(resourceid), Appium 从 Parent(LinearLayout) 获取子节点(Switch)

Trying to Get child node(Switch ) from Parent(LinearLayout) via AndroidFindby(resourceid), Appium

(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 上为 java 编写以下代码来达到切换按钮,但它不起作用

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

您在 XPath 策略中使用了 UiSelector 语法。这就是它不起作用的原因。试试这个:

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

正如你在这里看到的,一些样板文件可以省略,例如new UiSelector().resourceId(...)可以简化为resourceId(...)。还有一件事:一旦找到根元素(具有给定 resourceId 的 LinearLayout),就可以使用 .childSelector() 方法在层次结构中找到任何子元素,嵌套无关紧要。