java - Appium 选择了错误的定位器

标签 java android xpath appium

我正在 Android 6.0 手机上测试一个示例 Android 应用程序并运行 Appium UI 版本 1.10.0java 版本“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 的不同菜单项。

有什么建议吗?

最佳答案

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

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

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

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

关于java - Appium 选择了错误的定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190022/

相关文章:

java - 如何使用 java lambda 表达式通过迭代两个不同类型的列表来创建列表?

Java - 远程文件浏览器

android - 如何从日历中获取与会者的电子邮件或姓名

java - 在 proguard android 中忽略警告是正确的

android - listview.getChildAt(i) 返回 NULL

java - Xpath - 使用多个属性和部分文本的复合语句

javascript - 利用内置的 XPath 引擎来查询 javaScript 对象

java - Hibernate uuid生成和mysql uuid函数uuid()

java - JOGL 32 与 64 位库错误

XPath "following siblings before"