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

时间:2017-03-22 20:19:44

标签: android shell input adb ui-automation

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

我使用了UI Automator Viewer来获取' resource-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

感谢任何帮助。

提前致谢。

修改

此问题被标记为重复,因为它与另一个问Is there a way to get current activity's layout and views via adb?

的问题相同 然而,我的问题是不同的。我知道如何获取' text',' resource-id'和' class-name'通过使用automator从UI布局。如果我知道写的文字,我只需要知道我是否可以模拟触摸特定区域的设备用户界面上的触摸?例如:触摸'设置'图标,或触摸'开/关'拨动开关?

修改

感谢大家的帮助!我找到了一个解决方案,我正在寻找。 因此,如果您想要使用其文本触摸屏幕上的内容,或自动执行任务而无需使用“adb shell输入密钥事件”。要浏览屏幕,您只需下载并使用 uiautomator (Android uiautomator测试工具的Python包装器。),并使用文本模拟UI上的触摸。

例如:

from uiautomator import device as d

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

上面的代码按下主页按钮,然后点击/触摸UI上的“设置”区域。是写的,即如果你有“设置”。您主页上的图标。 与Appium相比,我发现这个解决方案更容易,因为你可以运行脚本并瞧!

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

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

1 个答案:

答案 0 :(得分:1)

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

对于Android,您可以使用Espresso或Appium(对于初学者来说,可能更容易使用Appium)。这些工具将让您自动化您想要在Android设备上执行的任何场景。

祝你好运。