是否有 ADB Shell 命令告诉我 TextView 的内容?

Is there an ADB Shell command that tells me the contents of a TextView?

我一直在 Linux 上编写此脚本,以便使我正在处理的应用程序的某些部分自动化。我的下一个目标是使应用程序的登录过程自动化,这相当于单击几个按钮并在网站上的单独登录页面中输入 6 位代码。我们正在使用 ADB shell 脚本和 Python 脚本 运行 Selenium webdriver 的组合来完成这项工作,用于需要登录的网页等等。

这让我留在了现在的位置;我找到了如何使用 ADB shell 命令在特定坐标处输入按钮按下(或者更确切地说是“点击”本身),所以这是问题的一半......但是,我无法找到专门抓取所需的命令在我的脚本中使用的 TextView 的内容;它用于登录流程,所以我需要将它分配给脚本中的一个变量,如果可能的话,就像你分配一个目录一样...

(即 $TEXTCONTENT=****** 其中 *s 是 6 位代码)

...所以以后Selenium webdriver需要登录输入6位密码的时候可以使用。是否有我正在寻找的特定命令来获取它?

您可以使用 AndroidViewClient 查找视图并与之交互。

我不知道您使用的是什么应用程序,所以我的示例基于计算器。

如果您在计算器上输入任何数字并且运行这个脚本

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

from com.dtmilano.android.viewclient import ViewClient

vc = ViewClient(*ViewClient.connectToDeviceOrExit())
vc.dump()

formula = vc.findViewByIdOrRaise("com.google.android.calculator:id/formula")
print(formula.getText())

它将打印那个数字。

这里可以使用uiautomator。有一个 Python 包 uiautomator 可以帮助:

from uiautomator import device as d

d(resourceId="id/mytextfield").text

或者如果您想以更手动的方式进行操作,可以使用 adb shell uiautomator dump 将屏幕内容转储到 XML 文件中。然后您可以在本地 adb pull 它,然后您的脚本可以在其中解析文本的 XML。