当两个元素在appium中具有相同的资源ID时该怎么办?

问题描述:

当appium的UIAutomator中的列表视图中的两个元素的资源ID是相同时要做什么?当两个元素在appium中具有相同的资源ID时该怎么办?

在这里下面的图片: -

两个元素都具有相同的资源ID:-net.one97.paytm:ID/smart_list_root

Figure 1 Figure 1

在这种情况下,你可以使用XPath或名称象下面这样:

方法1:

driver.findElement(By.xpath("//android.widget.TextView[@text='Mobile Prepaid']")); 
driver.findElement(By.xpath("//android.widget.TextView[@text='Mobile Postpaid']")); 

方式2:

driver.findElement(By.name("Mobile Prepaid")); 
driver.findElement(By.name("Mobile Postpaid")); 

获取文本使用XPath:

String text = driver.findElement(By.xpath("//android.widget.RelativeLayout")).getText();

比较文本并选择正确的UIElement来执行所需的操作。

if(text.equals("Mobile Prepaid")){ ...... }

+0

方法是正确的,但它没有点击那个元素 –

多个元素的XPath的TextView把它当作

"//android.widget.TextView[@text='Mobile Prepaid']" 

希望它会工作

您可以使用By.name一样,

driver.findElement(By.name("Mobile Prepaid")); 
driver.findElement(By.name("Mobile Postpaid")); 
+0

这是行不通的,它显示无效的选择器 –

+0

随着Appium 1.5名称选择器被删除。如果您使用1.5,请使用driver.findElement(By.xpath(“// android.widget.TextView [@ text ='Mobile Prepaid']”)) –