Appium 请帮我看看,如何提升文本框赋值速度,appium+Python+Android

youyu · 2017年03月13日 · 最后由 gxh 回复于 2017年06月05日 · 3122 次阅读

利用一个插件, 可以实现已 adb 命令的方式手机粘贴板内赋值, https://github.com/majido/clipper,之后不知道咋搞了。。。

共收到 20 条回复 时间 点赞

提升文本框输入速度,可以用这种方式

  • adb shell input text|keyevent
element = driver.findElement(By.id("com.calculator:id/EditText01"));
element.click();
Process p = Runtime.getRuntime().exec("/path/of/adb -s emulator-8088 shell input text 123456");

对于你提到的这个办法,需要先从剪贴板读取再赋值

// 安装clipper,启动服务
// 发送到剪贴板
Process p = Runtime.getRuntime().exec("adb shell am broadcast -a clipper.set -e text 123456");
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

// 确定剪贴板内容是想要输入的

// 赋值 CTRL+V (event_code 50 KEYCODE_V)
driver.pressKeyCode(50, AndroidKeyMetastate.META_CTRL_ON);

你好,我找到输入框了,然后也知道读取剪切板,然后就没有然后了。。不知道怎么把 get 到的值放到输入框。多谢!

youyu #18 · 2017年03月14日 Author

我想循环发消息,想 qq 聊天一样,一直发消息,用 sendkeys 很慢,所以想用 clipper。。

youyu 回复
// CTRL+V (event_code 50 KEYCODE_V)
driver.pressKeyCode(50, AndroidKeyMetastate.META_CTRL_ON);
ovpt 回复

非常感谢,谢谢!

ovpt 回复

弱弱的问一下,AndroidKeyMetastate.META_CTRL_ON 在 Python+appium 中怎么导入。。

AndroidKeyMetastate 这个在哪儿啊。。。。。

例子是 java 的,,你找找 python 里 ctrl+v 对应的 keycode 值。
在使用 driver.press_keycode(xxx) 就可以了啊。。

youyu #12 · 2017年03月14日 Author
hacrun 回复

我就是不知道 在 Python 中怎么发送有效的 ctrl+v 到 Android 才会生效 。。。臣妾做不到。。。。。

youyu 回复

driver.keyevent(xx)

def keyevent(self, keycode, metastate=None):
    """Sends a keycode to the device. Android only. Possible keycodes can be
    found in http://developer.android.com/reference/android/view/KeyEvent.html.
    :Args:
     - keycode - the keycode to be sent to the device
     - metastate - meta information about the keycode being sent
    """
youyu #11 · 2017年03月14日 Author
ovpt 回复

谢谢,可是我现在是 Python 的,然后我不知道怎么发 Ctrl v 给 Android,。。原谅我这小白。。

直接 set 值不能满足需求吗

python 里的粘贴功能:self.driver.press_keycode(50,28672)

gloria 回复

是的,不能,输入框没反应,没值,呵呵

dudu 回复

嗯嗯,多谢!写入了!我继续在小白的世界里学习,,

先在输入框点击一下,把光标定位到输入框, 最后再发送粘贴命令, 这个对输入法也有要求,某些中文输入法不行的.

萤火虫 回复

嘿嘿,我做了,然而 看起来赋值还是很慢 哈哈。。。我想嗖一下 那样的。。我想多了。。

这个平台真好,提问就有好心人解答,谢谢各位!

youyu 回复

youyu,怎么赋值到剪贴板还是没看懂,你是怎样使用那个插件的,哈哈

执行 os.system("adb shell input text 123456") 呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册