尝试通过 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()
方法在层次结构中找到任何子元素,嵌套无关紧要。
(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()
方法在层次结构中找到任何子元素,嵌套无关紧要。