我正在使用 Appium 框架测试我的 Android 应用程序。 我有一个 Android 屏幕,它的 View 没有 ID(而且我不想添加...),所以我想使用 Xpath。
这是 UI Automator Viewer 中的屏幕样子:
我想得到所有的相关布局(红色标记 - 十六项)
我尝试了以下方法:
List<WebElement> webElementslist =
mAppDriver.findElementsByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.ViewAnimator[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[2]");
但是我没有得到任何元素。
我在网上搜索并找到了下一个 xpath 教程,尝试了更多选项,但还是没有成功。
http://www.zvon.org/comp/r/tut-XPath_1.html#intro
非常感谢任何帮助。
最佳答案
现在,Android 上的 XPath 存在一些令人讨厌的错误,这些错误可以解释您所看到的行为。它们计划在 1.3.1 release 中修复
理想情况下,您可以查找所有 16 个 RelativeLayout
的 android.widget.LinearLayout
父级的资源 ID,然后执行如下操作:
//android.widget.LinearLayout[@resource-id="foo"]/android.widget.RelativeLayout
您的详细解决方案不起作用,因为您将其中一种布局的位置设置为 [2]
。
这里是固定的:
//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.ViewAnimator[1]/android.widget.FrameLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.ScrollView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout
....拜托,请使用第一个解决方案。
我正在使用 UiAutomator
定位器策略为您的问题寻找解决方案,但还没有答案(因为 .fromChild()
和 .fromParent()
好像坏了)
关于android - 需要使用 appium 识别 android 元素的 xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159603/