ADB 输入中文

ADB 输入中文。

使用MonkeyRunner、adb shell向Android应用中自动输入中文字符

在做一些Android自动化脚本,比如向手机QQ中输入中文聊天内容,由于使用Robotium、Appium等工具来做时,由于TX作了签名校验的,所以登录不了QQ的。后来只能使用最傻的MonkeyRunner来做,不过它是完全模拟人为点击,而数据中文就很麻烦了。为此我们尝试了多种方案,简单分享一下:

1. 通过PC的剪贴板与Android模拟器中共享来实现:先将要输入的中文放到PC的剪贴板中,再到Android模拟器中粘贴到QQ聊天输入框中。其缺点是,很不稳定,有时候成功,有时候比较莫名的失败。

2. adb shell input 命令可直接将字符串输入到Android应用的Input框中,但问题来了,它不支持unicode字符啊(仅支持ASICC字符)。于是,我根据网上资料找到了一个方法:使用unicode字符原样输出,然后再转化为encoded字符。比如:https://github.com/bingwei/inputchineseviaadb,就实现了这样的转换,在app中复制到android的剪贴板中,然后可以在QQ聊天框等地方粘贴就好了。当然这里他这个gitlab项目中utils/inputunicode.py文件有点小bug,对于python 2.x,需要在adb shell input后跟的string用encode(‘unicode-escape’)编码。
这个种方式的速度不是很快,不过还是算不错的,因为本来做UI自动化耽误个一两秒钟也是可以接受的;我们最终就是采用了这种方案,目前运行下来是非常稳定的。

3. 使用一个外部REST服务器,搞一个key-value对放到REST sever中,其中key是全英文的,而value中可以包含中文;然后通过adb shell input将key传入到Andoid中,在Android中根据key去请求远程REST API从而得到包含中文字符的Value。没试过这种方法,不过应该是可行的;但其效率估计比第2中方法还要效率低下。

4. 一种专门为unicode做的输入法,可以adb shell input输入unicode,它帮你转成中文之类的字符。没真正尝试过。

2016-01-02 更新:2015年做App UI自动化时,后来发现了这个,也很不错:https://github.com/senzhk/ADBKeyBoard 可用于直接输入中文字。

参考资料:
http://blog.csdn.net/xiqobai/article/details/8204653
https://github.com/bingwei/inputchineseviaadb
https://github.com/smilejay/android-app/tree/master/CopyToClipboard
https://github.com/senzhk/ADBKeyBoard


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
adb pull命令用于从Android设备中将文件或目录复制到本地电脑上。如果目录中含有中文字符,则需要在命令中正确处理中文字符的编码问题。 通常,adb pull命令的语法如下: adb pull <设备路径> <本地路径> 假设中文目录位于Android设备的sdcard目录下的"中文目录"文件夹中,我们可以按照以下步骤进行操作: 1. 首先,确保已经连接到Android设备,并且adb已经设置为系统环境变量中。 2. 打开命令提示符或终端窗口。 3. 使用cd命令进入想要保存文件的本地目录。 4. 在命令提示符或终端窗口中,键入以下命令: adb shell "ls /sdcard/中文目录"(此命令是为了先查看目录是否存在以及确认路径中的中文字符显示正常) 5. 如果第4步返回目录列表,并且中文字符正确显示,继续输入以下命令: adb pull /sdcard/中文目录 此命令将会将整个中文目录文件夹复制到当前命令窗口所在的本地目录中。 6. 如果希望将中文目录复制到指定的本地路径中,替换命令中的 <本地路径>参数为想要保存到的目标路径。 需要注意的是,如果中文目录名在Windows系统中的编码方式为UTF-8,则如果命令提示符或终端窗口的编码方式不是UTF-8,可能会导致中文字符显示不正常。在这种情况下,可以尝试更改命令提示符或终端窗口的编码方式为UTF-8,或者使用Unicode转义序列来表示中文字符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值