
Security News
MCP Community Begins Work on Official MCP Metaregistry
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
adbui 所有的功能都是通过 adb 命令,adbui 的特色是可以通过 xpath,ocr 获取 ui 元素。
pip install adbui
from adbui import Device
d = Device('123abc') # 手机的sn号,如果只有一个手机可以不写
util 负责执行完整的命令
cmd 用来执行系统命令
d.util.cmd('adb -s 123abc reboot')
out = d.util.cmd('ping 127.0.0.1')
adb 用来执行 adb 命令
d.util.adb('install xxx.apk')
d.util.adb('uninstall com.tencent.mtt')
shell 用来执行 shell 命令
d.util.shell('pm clear com.tencent.mtt')
d.util.shell('am force-stop com.tencent.mtt')
adb_ext 对常用 adb 命令的封装,下面列出部分操作(可在 adbui/adb_ext.py 文件自行增加需要的操作)
screenshot
d.adb_ext.screenshot() # 截图保存到系统临时目录,也可指定目录
click
d.adb_ext.click(10, 32) # 执行一个点击事件
input
d.adb_ext.input('adbui') # 输入文本
back
d.adb_ext.back() # 发出 back 指令
get_ui 可以通过多种方式获取 UI
by attr 通过在 uiautomator 里面看到的属性来获取
ui = d.get_ui_by_attr(text='设置', desc='设置') # 支持多个属性同时查找
ui = d.get_ui_by_attr(text='设', is_contains=True) # 支持模糊查找
ui = d.get_ui_by_attr(text='设置', is_update=False) # 如果需要在一个界面上获取多个 UI, 再次查找时可以设置不更新xml文件和截图,节省时间
ui = d.get_ui_by_attr(class_='android.widget.TextView') # class 在 python 中是关键字,因此使用 class_ 代替
ui = d.get_ui_by_attr(desc='fffffff') # 如果没有找到,返回 None;如果找到多个返回第一个
ui = d.get_uis_by_attr(desc='fffffff') # 如果是 get uis 没有找到,返回空的 list
by xpath 使用 xpath 来获取
mic_btn = d.get_ui_by_xpath('.//FrameLayout/LinearLayout/RelativeLayout/ImageView[2]') # 获取麦克风按钮
mic_btn.click() # 点击麦克风按钮
# adbui 使用 lxml 解析 xml 文件,因此 by xpath 理论上支持任何标准的 xpth 路径。
# 这里有一篇 xpath 使用的文章:https://cuiqingcai.com/2621.html
# 另外获取的 ui 对象实际是一个自定义的 UI 实类,ui 有一个 element 的属性,element 就是 lxml 里面的 Element 对象,
# 因此可以对 ui.element 执行 lxml 的相关操作。
# lxml element 对象的文档:http://lxml.de/api/lxml.etree._Element-class.html
scan_element = ui.element.getprevious() # 获取麦克风的上一个 element,即扫一扫按钮
scan_btn = d.get_ui_by_element(scan_element) # 使用 element 实例化 UI
scan_btn.click() # 点击扫一扫按钮
by ocr 使用腾讯的OCR技术来获取
d.init_ocr('10126986', 'AKIDT1Ws34B98MgtvmqRIC4oQr7CBzhEPvCL', 'AAyb3KQL5d1DE4jIMF2f6PYWJvLaeXEk')
# 使用 ocr 功能前,必须要使用自己的开发密钥初始化,上面的密钥是我申请的公共测试密钥,要稳定使用请自行申请
# 腾讯的 ocr 功能是免费使用的,需要自己到 http://open.youtu.qq.com/#/develop/new-join 申请自己的开发密钥
btn = d.get_ui_by_ocr(text='爱拍') # 找到爱拍文字的位置
btn.click() # 点击爱拍
20210425 version 4.5.0
20210425 version 4.0.0
20210418 version 3.5.2
20210325 version 2.6
20210325 version 2.4
20200402 version 1.0
20200328 version 0.40.1
FAQs
adbui 所有的功能都是通过 adb 命令,adbui 的特色是可以通过 xpath,ocr 获取 ui 元素。
We found that adbui demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The MCP community is launching an official registry to standardize AI tool discovery and let agents dynamically find and install MCP servers.
Research
Security News
Socket uncovers an npm Trojan stealing crypto wallets and BullX credentials via obfuscated code and Telegram exfiltration.
Research
Security News
Malicious npm packages posing as developer tools target macOS Cursor IDE users, stealing credentials and modifying files to gain persistent backdoor access.