0

我遇到了一个奇怪的问题,从命令行运行adb shell sendevent x x x命令可以正常工作,但是当我使用以下任何一种时:

subprocess.Popen(['adb', 'shell', 'sendevent', 'x', 'x','x'])
subprocess.Popen('adb shell sendevent x x x', shell=True)
subprocess.call(['adb', 'shell', 'sendevent', 'x', 'x','x'])

它们都失败了——即使在 shell 脚本中工作的模拟触摸在通过 python 调用时也不能正常工作。此外,我尝试adb push了设备的 shell 脚本,并且使用adb shell /system/sh /sdcard/script.sh我能够成功运行它,但是当我尝试通过 python 运行该命令行时,脚本失败了。

更奇怪的是,他的脚本运行,但是例如,它似乎没有sleep 1在脚本中途执行命令,echo命令工作,sendevent命令似乎不起作用。

甚至似乎不可能,但它确实存在。如何adb shell sendevent x x x通过 python 运行一组命令?

4

1 回答 1

0
  • sendevent接受 4 个参数
  • argsfor Popenshould be ['adb', 'shell', 'sendevent /dev/input/eventX type code value']- 不要拆分远程命令
  • 时序对于sendevent序列很重要,并且adb shell调用本身有点昂贵 - 因此在设备上使用 shell 脚本效果更好
  • 注意你的 shell 脚本中的换行符 - 确保它是 unix 样式(单个\n而不是\r\n
于 2013-08-23T17:01:33.763 回答