自动化测试MonkeyRunner、adb shell向Android APP中自动输入中文

在做一些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,它帮你转成中文之类的字符。没真正尝试过。

时间: 2024-10-27 01:27:12

自动化测试MonkeyRunner、adb shell向Android APP中自动输入中文的相关文章

使用adb命令向Android模拟器中导入通讯录联系人的方法_Android

本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

使用adb命令向Android模拟器中导入通讯录联系人的方法

本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下:BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

求大牛相助-关于android app中接入图灵机器人的空指针异常

问题描述 关于android app中接入图灵机器人的空指针异常 04-08 22:39:17.076: E/AndroidRuntime(24578): FATAL EXCEPTION: main 04-08 22:39:17.076: E/AndroidRuntime(24578): java.lang.NullPointerException 04-08 22:39:17.076: E/AndroidRuntime(24578): at com.example.godness.HttpUt

如何把 byteArray从 Native C发送到 android app中?

问题描述 如何把 byteArray从 Native C发送到 android app中? 我开发了一个 Native application 名称是 test.c,我想从 native C 文件中返回arrayofByte,也可以编译,当我运行程序时,.so 文件生成. 08-28 13:04:08.477: D/dalvikvm(945): No JNI_OnLoad found in /data/data/com.ssg.nativelibtest/lib/libnativelibtest

app-如何在Android APP中实现三维模型展示

问题描述 如何在Android APP中实现三维模型展示 有一个3D Max做的三维模型,要用怎么样的技术手段添加到APP中,就像百度地图的APP中有些建筑就是有三维模型.求大神指点. 解决方案 [android]app中实现时间展示样式 解决方案二: Unity 3D可以解决你的问题

js限制input标签中只能输入中文

  这篇文章主要介绍了js限制input标签中只能输入中文的的相关资料,需要的朋友可以参考下 方法很简单,这里就不多BB了,直接奉上示例 ? 1 2 3 4 5 6 7 8 9 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>只能输入中文</title> </head>

在PowerPoint 2007中无法输入中文

在PowerPoint 2007中无法输入中文 检查一下是不是因"高级文字服务"被关闭而导致 从开始菜单找到"控制面板",双击"区域和语言选项". 在弹出的窗口中,切换到"语言"选项卡,单击"详细信息"按钮. 进入"文字服务和输入语言"设置窗口,单击"高级"选项卡,默认状态下"关闭高级文字服务"复选框前是没有勾选的,如果有,请将其清除.然后退出设置

linux下gedit中不能输入中文

问题描述 linux下gedit中不能输入中文 如题 求大神解答 输入只能是字母 可我想输点汉字啊... 解决方案 gedit 可输入中文的文本编辑器myeclipse在linux下不能输入中文 解决方案二: gedit本身是支持中文的,是不是你的输入法有什么问题,换个输入法试试 解决方案三: 应该是能支持的,linux原生支持unicode的.看看是不是输入法问题,或者首选项里的设置问题. 解决方案四: http://wiki.ubuntu.com.cn/Gedit%E4%B8%AD%E6%9

在 PowerPoint 2007 中无法输入中文解决办法

问题状态 没办法在PowerPoint2007幻灯片里输入汉字了,但其它的都是可以,如包括了数字,字母之类的没有问题. 解决办法 我们可以检查一下这个问题是不是因"高级文字服务"被关闭而导致的.   从开始菜单找到"控制面板",双击"区域和语言选项". 在弹出的窗口中,切换到"语言"选项卡,单击"详细信息"按钮. 进入"文字服务和输入语言"设置窗口,单击"高级"选项卡