首页 > 编程问答 >通过 python 获取 android.view.ViewGroup 中的子项

通过 python 获取 android.view.ViewGroup 中的子项

时间:2024-07-29 10:15:30浏览次数:11  
标签:python android appium adb

是否可以使用 python、adb 或任何库从 android.view.ViewGroup 获取子元素或文本,但不需要 java 和 kotlin?

我正在尝试使用 python 自动化 android 模拟器。与模拟器的交互通过 adb 进行。当我得到屏幕转储时,我看到我需要的元素是 android.view.ViewGroup,并且 text 和 content-desc 属性为空,尽管屏幕上有文本。在不同的模拟器实例中,相同元素的elementId值不同,因此不适合识别。使用 Appium Inspector,我得到了相同的结果。


很遗憾,不使用 Java 或 Kotlin 直接通过 Python 获取 android.view.ViewGroup 的子元素或文本是不可行的。

主要原因如下:

  1. Android UI 框架基于 Java/Kotlin : Android UI 框架的底层是 Java 和 Kotlin。获取 View 层级结构和属性需要与这些框架进行交互。
  2. ADB 能力有限 : ADB (Android Debug Bridge) 主要用于与设备进行高层级的通信,例如安装应用、运行命令等。它并不提供直接访问和操作 UI 元素的方法。
  3. Python 库依赖 : 现有的 Python 库,例如 Appium,虽然可以与 Android 设备交互,但它们底层仍然依赖 Java 或 Kotlin 库(例如 UIAutomator 或 Espresso)来实现 UI 操作。

可选方案:

尽管无法直接使用 Python 获取子元素,但可以尝试以下方法:

  1. 使用 UIAutomator2 或 Espresso (需要 Java/Kotlin): 可以使用 Java 或 Kotlin 编写脚本,并使用 UIAutomator2 或 Espresso 等测试框架来获取 ViewGroup 的子元素和文本。然后,可以通过 Python 调用这些脚本。

  2. 分析屏幕截图 : 如果文本内容是固定的,可以尝试使用 OCR (Optical Character Recognition) 技术从屏幕截图中提取文本。Python 中有一些 OCR 库可供使用,例如 Tesseract 和 PyOCR。

  3. 使用 Accessibility 服务 : Android 的 Accessibility 服务可以获取有关 UI 元素的信息,包括 ViewGroup 的子元素。可以使用 Java/Kotlin 开发一个简单的 Accessibility 服务,并通过 Python 与其进行通信。

建议:

  • 如果需要频繁地与 Android UI 进行交互,建议学习 Java 或 Kotlin 的基础知识,以便更好地利用 Android 提供的工具和框架。
  • 如果的需求比较简单,可以尝试使用 OCR 或 Accessibility 服务等替代方案。

希望以上信息能帮到!

标签:python,android,appium,adb
From: 78805203

相关文章

  • Python反编译失败。 (不支持的操作码:JUMP_IF_NOT_EXC_MATCH)
    我尝试使用“pycdc.exe”反编译使用pycdc.exe失败。因为错误“不支持的操作码:JUMP_IF_NOT_EXC_MATCH”在此处输入图像描述使用pycdc.exe失败。因为错误“不支持的操作码:JUMP_IF_NOT_EXC_MATCH”你知道我为什么失败吗?(我试图编译的.pyc似乎是3.10版本)......
  • 计算机毕业设计项目推荐,基于Echarts的高校就业数据可视化管理系统 81461(开题答辩+程序
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校就业管理等问题,对高校就业管理进行研究分析,然后开发设计出高校就业数据可视化管理系统......
  • Python逆向总结(Python反编译)
    目录第一种:直接反编译型第二种:打包成exe的py文件第三种: 给pyc字节码(类汇编形式)第四种:加花的pyc内容参考第一种:直接反编译型除了直接获得题目内容的python文件外,出题人也可以稍微加工一点点,给出题目python文件所对应的pyc文件,即python的字节码。PYC文件的定义pyc......
  • 【Python学习手册(第四版)】学习笔记06-Python动态类型-赋值模型详解
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。主要介绍Python的动态类型(也就是Python自动为跟踪对象的类型,不需要在脚本中编写声明语句),Python中变量和对象是如何通过引用关联,垃圾收集的概念,对象共享引用是如何影响多个变量......
  • Python学习手册(第四版)】学习笔记09.3-Python对象类型-分类、引用VS拷贝VS深拷贝、比较
    个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。这部分稍杂,视需要选择目录读取。主要讲的是对之前的所有对象类型作复习,以通俗易懂、由浅入深的方式进行介绍,所有对象类型共有的特性(例如,共享引用),引用、拷贝、深拷贝,以及比较、......
  • 同时运行多个Python文件
    如何同时运行python的多个文件我有三个文件pop.pypop1.pypop2.py我想同时运行这个文件这些文件正在被一一运行python代码运行所有文件可以使用以下几种方法同时运行多个Python文件:1.使用多线程/多进程:多线程(threading):如果的Pytho......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-56- 多文件上传 - 下篇
    1.简介前边的两篇文章中,宏哥分别对input控件上传文件和非input控件上传文件进行了从理论到实践地讲解和介绍,但是后来又有人提出疑问,前边讲解和介绍的都是上传一个文件,如果上传多个文件,Playwright是如何实现的呢?宏哥看了一下官方的API也有上传多个文件的API,那么今天就来讲解和介绍......
  • 如何使用python模块捕获用户的文本输入
    我正在开发一个项目,它会检测到如果您按“(”,它会自动关闭它“[”和“{”的情况相同,但重点是它检测键盘按钮“{”或“[”不是字符,这意味着如果朋友有不同的方式输入“[”,它将无法工作,因为该程序用于检测“altgr+(”序列,这可能会影响不同语言的键盘因为您不想在按下......
  • 如何更新 numpy 2 的 python 模块?
    在带有pip的Linux上,新的numpy2似乎可以很好地与pandas配合使用:$python3-c'importnumpyasnp;print(np.__version__);importpandasaspd;print(pd.__version__)'2.0.12.2.2但是,在带有miniconda的Windows上,我得到$${localappdata}/miniconda3/en......
  • python BioChemist 数据集的数据字典/描述
    我正在使用生物化学家数据集。我在哪里可以找到包含每个变量描述的“数据字典”?这就是我正在查看的:importpandasaspdfrompydatasetimportdatadata('bioChemists')我已经用谷歌搜索并尝试寻找运算符,但没有运气!pydataset软件包不包含生物化学家数据集的描述......