我在Android上有一个React-Native应用程序,屏幕上有多个Pickers(下拉列表)。我将一个accessibilityLabel分配给第一个选择器组件,称为“选择说明”,并将我一个accessibilityLabel分配给第二个选择器组件,称为“选择价格”。我可以使用driver.waitForElementByAccessibilityId( "Pick Price" )
在页面上找到第二个选择器组件,但是我需要能够找出选择器中的文本值,即已选择的值。我正在使用Jest,JavaScript和wd。
我已经使用Appium Desktop打开了该应用程序,并选择了选择器,我看到它具有一个子组件,该子组件是android.widget.TextView,其资源ID为“ android:id / text1”。
如果我使用driver.waitForElementByAccessibilityId( "Pick Price" ).waitForElementById( "android:id/text1" ).text();
,它将从第一个选择器中获取文本,即“选择说明”。看起来它只是返回页面上ID为“ text1”的第一个元素。
当我为Picker组件分配了accessibilityLabel但没有为TextView分配accessibilityLabel时,如何从React-Native Picker组件获取文本值?
答案 0 :(得分:0)
您可以考虑移至XPath selector,然后将代码修改为:
driver.waitForElementByAccessibilityId( "Pick Price" ).waitForElementByXPath( ".//[@android:id/text1]" ).text();
这样,第二个Web元素搜索范围将相对于第一个元素。
参考文献:
答案 1 :(得分:0)
我发现了如何做到这一点。能够在元素内进行搜索的唯一搜索方法是elementBy...
和elementsBy...
方法。为了使这些方法可以对链中返回的前一个元素进行操作,您需要添加'>'
作为方法中的第一个参数。这告诉该方法对元素起作用而不是全局作用。因此,对于上面的示例,您将使用
driver.waitForElementByAccessibilityId("Pick Price").elementById(">", "android:id/text1").text();
参考文献: