Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本

Posted

技术标签:

【中文标题】Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本【英文标题】:Appium automation test: How to get element or text from custom UI in android [android.view.View] 【发布时间】:2016-07-29 14:13:06 【问题描述】:

我是 Appium 在 android 上测试自动化的初学者。 我使用 IUAtomatorviewer 从 Android 应用程序中获取元素 但我认为我的申请来自海关 UI。我知道那是 android.support.v7.widget.RecyclerView / android.view.View 在 [android.view.View] 元素中, 没有文字或其他信息

我看到它包括 TextView、Image...与 listview 中的一个项目相同

这是我的代码

AndroidElement el = driver.findElement(By.id(io.***.vodi:id/message_list_item_chat_id));
AndroidElement el2 = (AndroidElement) el.findElementByClassName("android.view.View");
el2.getText(); //result is blank
el2.getAttribute("text") //result is blank

所以 我如何获取文本内部 [android.view.View] ?或视图的属性

这里是 UIAutomatorviewer 的图片

【问题讨论】:

虽然我怀疑它是因为在开发过程中使用了 RecyclerView,但我仍然希望你不会在 UIAutomatorViewer 上看到完全不同的 View 你使用的是哪个android sdk版本? 我认为更新到最新的 sdk 和 UIAutomator 应该可以工作。 【参考方案1】:

通过资源 ID 获取“回收站视图”。然后,您可以获取不同视图的内部并选择第 4 个视图以查看“视图 #4”。

【讨论】:

【参考方案2】:

在从 android 视图中获取文本时,我也遇到了同样的问题。以下代码对我有帮助:

在列表中获取所有元素:

List<WebElement> allChats : driver.findElements(By.xpath("//*[@class='android.view.View']"));

然后遍历for循环并使用name属性获取文本

for(WebElement chat : allChats)

     System.out.println(chat.getAttribute("name"));

【讨论】:

以上是关于Appium 自动化测试:如何从 android [android.view.View] 中的自定义 UI 中获取元素或文本的主要内容,如果未能解决你的问题,请参考以下文章

Android自动化测试——Appium的使用

Android自动化测试:如何实现Appium每次运行,不安装APP

如何使用 Appium 滚动 Robot Framework 以在 Android 设备上测试应用程序

Appium+Python 自动化测试之二:启动APP(Android篇)

如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试

appium如何打开Genymotion(android)中的UC浏览器