Android 我们可以使用adb命令触摸屏幕上的元素吗?

Android 我们可以使用adb命令触摸屏幕上的元素吗?,android,shell,input,adb,ui-automation,Android,Shell,Input,Adb,Ui Automation,我想知道是否有任何方法可以使用adb命令通过基于文本识别元素来模拟连接设备上的触摸? 例如:我想使用adb进入设备设置,并触摸基于文本的特定选项,如“显示”、“Sim卡管理器”等。一旦进入该设置,我需要再次触摸使用其文本的一些选项 我已经使用UI Automator Viewer获取屏幕上元素的“资源id”和“文本”。它们可以用于定位触摸位置吗 使用adb可以做到这一点吗?或者还有其他可以使用的工具吗? 我需要它是一个脚本,这样它就可以从命令提示符下运行并完成所需的工作 目前,我使用以下命令打开

我想知道是否有任何方法可以使用adb命令通过基于文本识别元素来模拟连接设备上的触摸? 例如:我想使用adb进入设备设置,并触摸基于文本的特定选项,如“显示”、“Sim卡管理器”等。一旦进入该设置,我需要再次触摸使用其文本的一些选项

我已经使用UI Automator Viewer获取屏幕上元素的“资源id”和“文本”。它们可以用于定位触摸位置吗

使用adb可以做到这一点吗?或者还有其他可以使用的工具吗? 我需要它是一个脚本,这样它就可以从命令提示符下运行并完成所需的工作


目前,我使用以下命令打开设置,浏览选项并选择它们,但这是不可靠的,因为不同的android版本有不同的UI布局:

adb shell am start -S com.android.settings/.Settings
adb shell input keyevent KEYCODE_DPAD_RIGHT
adb shell input keyevent KEYCODE_DPAD_DOWN
adb shell input keyevent ENTER
感谢您的帮助

提前谢谢

编辑 这个问题被标记为重复,因为它与提出的另一个问题相同

然而,我的问题不同。我知道如何使用automator从UI布局中获取“文本”、“资源id”和“类名”。我只是想知道我是否可以模拟触摸设备的UI来触摸特定区域,如果我知道写的文本?例如:触摸“设置”图标,或触摸“开/关”切换开关

编辑 谢谢大家的帮助!我已经找到了解决我一直在寻找的问题的办法。 因此,如果您想使用文本在屏幕上触摸某些东西,或者不必使用“adb shell input keyevents”在屏幕上导航而自动执行任务,您可以下载并使用uiautomator(Android uiautomator测试工具的Python包装器),然后使用文本模拟触摸UI

例如:

上面的代码按下home按钮,然后单击/触摸UI上写入“设置”的位置,即如果主页上有“设置”图标。 与Appium相比,我发现这个解决方案更简单,因为您只需运行脚本,瞧

如果您也想运行adb命令,也可以将uiautomator库与子流程结合使用


此外,如果用户界面上有一种非英语字符的语言,您可以使用UI Automation Viewer工具复制文本并粘贴到程序中,然后使用支持的编码方法运行python脚本。

欢迎来到自动化测试的世界(即使您真的不想测试任何东西)

对于Android,您可以使用浓缩咖啡或Appium(对于新手来说,Appium可能更容易)。这些工具将使您能够在android设备上自动执行任何场景


祝你好运。

“但这是不可靠的,因为不同的android版本有不同的UI布局”——这也会影响你的UiAutomator。制造商通常会修改应用程序的设置。你不可能想出一些通用的方法。“它们可以用来定位触摸位置吗?”——通过UiAutomator测试套件,可以。我不知道还有其他选择。
from uiautomator import device as d

d.press.home()
d(text="Settings").click()