Appium选择了错误的定位器

时间:2019-01-14 22:17:03

标签: java android xpath appium

我正在Android 6.0手机上测试示例Android应用,并运行Appium UI version 1.10.0java version "1.8.0_111"。我需要单击“ Office Location”菜单项,但找不到合适的定位器。

这是Appium Inspector的快照。

Appium Inspector 1

我也尝试使用Appium Inspector中的录制功能,但确实将我发送到应用程序的正确屏幕。

Appium Inspector 2

但是,当我在项目中使用以下代码行时,选择了错误的菜单项。

MobileElement el1 = (MobileElement) driver.findElementByXPath("(//android.widget.ImageView[@content-desc=\"73: [Office Locations]\"])[2]");
el1.click();

我希望选择Office Locations菜单项,而是选择了具有不同cont_desc的其他菜单项。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

首先,尝试在appium inspector中找到相同的xpath,并检查它显示了多少个匹配元素。

如果它仅显示一个匹配的元素,则尝试对找到的元素执行某些操作,并检查它在哪里执行操作。

也尝试使用resource-id查找元素。如果该元素不存在,则使用其父元素或同级元素。

很多时候,人们错误地将元素的xpath获取到实际元素的后面并面对这种问题。尝试避免生成xpath。

答案 1 :(得分:0)

您可以使用具有 cont-desc findElementByAccessibilityId 来访问元素。

MobileElement element= driver.findElementByAccessibilityId("\"73: [Office Locations]\"");
element.click();
  

您可以要求开发人员在代码中添加唯一的cont-desc。

答案 2 :(得分:0)

您可以使用xpath查找元素,并且在xpath中需要指定内容描述,我认为这可能会有所帮助

driver.findElementByXPath("//android.view.View[@content-desc='description'].click();

您指定的方式有误,因此它没有点击显示的内容描述,因为您必须提及它