清除编辑文本 - adb

9
如何使用shell命令清除焦点文本编辑框。
我尝试过:
adb shell input keyevent KEYCODE_CLEAR // Not worked 
adb shell input keyevent KEYCODE_DEL // Delete only one char
adb shell input keyevent KEYCODE_FORWARD_DEL // Not worked

我只能删除一个字符,有没有办法删除/清除焦点编辑文本?


尝试使用 adb shell input text '' - karan
命令的参数无效:文本。即使我强制运行,它也会在已输入的文本中添加新空格。 - Krishnakant
我找不到任何可以清除整个EditText数据的命令。 - karan
5个回答

15

这对我有效:

function clear_input() {
    adb shell input keyevent KEYCODE_MOVE_END
    adb shell input keyevent --longpress $(printf 'KEYCODE_DEL %.0s' {1..250})
}

然后:

clear_input

KEYCODE_MOVE_END和KEYCODE_DEL是什么? - m0skit0
1
KEYCODE_MOVE_END = 将光标移动到行尾 - Pedro Rodrigues
KEYCODE_DEL = 删除当前光标位置的字符 - Pedro Rodrigues
1
我认为这并不明显,但是这是正确的语法,因为它是一个常量而不是环境变量: https://developer.android.com/reference/android/view/KeyEvent - Pedro Rodrigues
我已经点赞并使用了你的答案,但我只是在评论中提出改进意见。那是不正确的Bash语法,没有例外。在Bash中,常量/变量是不需要$声明的,但是要获取它们的值,您需要在前面加上$。但是,如果您愿意,可以避免学习这些知识。 ;) - m0skit0
这些值是 Android SDK 的常量,而不是 BASH。请这次查看链接。 https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MOVE_END - Pedro Rodrigues

5

这将选择所有内容然后按退格键。

input keycombination 113 29 && input keyevent 67

太棒了 - 这应该是最受欢迎的解决方案! - stoefln

4
你可以使用以下方式:
adb shell input keyevent --longpress 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67

67是KEYCODE_DEL的按键代码。


1
需要前往编辑文本的末尾。 - Dr.jacky

2
如果您使用uiautomator(https://github.com/xiaocong/uiautomator),您可以按照以下步骤进行操作:
  1. 点击EditText工具以获得焦点,然后

  2. 使用device(focused=True).clear_text()清除视图,或使用device(focused=True).set_text("new text")来设置新文本。


问题涉及ADB。 - m0skit0

1
到目前为止,我发现唯一的方法是获取正确的坐标,使用input swipe x y x y duration来模拟长按。这将突出显示EditText字段中的所有文本。然后,您可以发送要替换原有文本的键。
我只希望adb shell input keyevent KEYCODE_CLEAR可以清除字段中的所有文本。如果有人能找到更好的方法,那就太好了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接