【问题标题】:Appium is selecting the wrong locatorAppium 选择了错误的定位器
【发布时间】:2019-06-08 22:38:40
【问题描述】:

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

这是来自 Appium Inspector 的快照。

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

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

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

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

有什么建议吗?

【问题讨论】:

    标签: java android xpath appium


    【解决方案1】:

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

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

    还可以尝试使用 resource-id 来查找元素。如果此元素不存在,则使用其父元素或兄弟元素。

    很多时候人们错误地获取了实际元素后面的元素的xpath并面临这种问题。尽量避免生成 xpath。

    【讨论】:

    • 谢谢。您的建议让我发现//android.widget.ImageView[@content-desc="73: [Office Locations]"] 的两个匹配xpath。右下角的主页按钮与菜单项具有相同的内容描述,因为它们通向同一个屏幕。由于菜单后面的按钮达到顶峰,Appium 仍在捡起它。解决方案是简单地将主页按钮的名称更改为与同一屏幕的菜单项不同。
    【解决方案2】:

    您可以使用具有 cont-descfindElementByAccessibilityId 访问您的元素。

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

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

    【讨论】:

    • 谢谢。我的问题是即使使用 findElementByAccessibilityId 也会选择错误的菜单项。除了这个之外,所有其他菜单项都可以正常工作。出于某种原因,在我的测试中,改为点击领导力。在第一个屏幕截图中,Appium 没有将 73: [Office Locations] 识别为 Accessibility Id,如警告所示。但是,在使用 Appium Inspector 的 tap 后,它突然显示为 Accessibility Id
    • 您要交互的元素必须在屏幕中可见。所以第一步是显示菜单项,然后你就可以使用上面的代码了。还要检查“领导”菜单项是否与“办公室位置”具有相同的自动化 ID
    • 他们没有相同的定位器 ID。在 Android 中,即使菜单打开,它后面的定位器,例如,主屏幕上的按钮,仍然可以看到。其中一个主页按钮也是“办公室位置”,所以这就是 Inspector 在 xpath 末尾显示 [2] 索引的原因。仍然不确定为什么在 Appium Inspector 中使用相同的代码在我的测试中不起作用,但简单的解决方案是将主页按钮名称更改为独特的名称。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 2020-09-02
      • 1970-01-01
      相关资源
      最近更新 更多