实际上我想要删除文本字段中的所有文本,并且我正在使用一个调用device.press('KEYCODE_DEL')
的循环来实现此目的。
但有两个缺点:
所以我试图通过两个步骤来实现这个目标:
我发现了一个类似的问题here尚未解决。
there是如何选择所有文字的答案,但我认为它与我的循环删除方式存在相同的问题。
我做了几次测试,并找到了接近它的方法:
device.press('KEYCODE_MENU', 'MonkeyDevice.DOWN', '')
device.press('KEYCODE_A')
device.press('KEYCODE_MENU', 'MonkeyDevice.UP', '')
我认为这三个步骤可以完成MENU+A
操作。但它每次都不起作用。我执行了20次这个代码(循环),发现它只生效了大约5-8次。
此外,我发现这三个步骤大部分时间都会将光标移动到第一位。
有谁知道为什么这个操作不可靠?或者选择所有文字的其他建议?
感谢任何建议!
答案 0 :(得分:0)
AndroidViewClient 的EditText
有一个方法:
def setText(self, text):
"""
This function makes sure that any previously entered text is deleted before
setting the value of the field.
"""
if self.text() == text:
return
self.touch()
guardrail = 0
maxSize = len(self.text()) + 1
while maxSize > guardrail:
guardrail += 1
self.device.press('KEYCODE_DEL', adbclient.DOWN_AND_UP)
self.device.press('KEYCODE_FORWARD_DEL', adbclient.DOWN_AND_UP)
self.type(text, alreadyTouched=True)
答案 1 :(得分:0)
使用AndroidViewClient非常简单。试试这段代码 -
editText= vc.findViewByIdOrRaise(EDITTEXT ID in quotes)
(x,y) = editText.getXY()
editText.device.drag((x,y), (x,y), 2000, 1)
vc.dump()
device.press('KEYCODE_DEL')