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

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

利用一个插件, 可以实现已 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) 就可以了啊。。

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 回复

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

youyu #15 · 2017年03月15日 Author
dudu 回复

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

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

youyu #17 · 2017年03月15日 Author
萤火虫 回复

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

youyu #18 · 2017年03月15日 Author

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

youyu 回复

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

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

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