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每次运行,不安装APP
如何使用 Appium 滚动 Robot Framework 以在 Android 设备上测试应用程序
Appium+Python 自动化测试之二:启动APP(Android篇)