[android]uiautomator中文输入解决方案
16lz
2021-01-26
UiAutomator不支持中文输入。
通过设置中文输入法为默认,UiObject.setText("pinyin ") 的方式,可以实现中文输入,但是只能输入一些固定的词组。
github上发现了一个 utf7ime 的好东西,可以实现中文输入,英文输入,中英文混合输入。简单来说,支持输入任何unicode编码的字符。
原理是:UiObject.setText( String) 只能接受ASCII码,整个过程是输入的unicode编码的字符串decode成ASCIl码,setText接受这些ASCll码再通过utf7ime这个输入法encode成unicode编码的字符串输出。
前置条件:手机装入此输入法并将之设为默认输入法
简单说一说整个过程,
打包下载 https://github.com/sumio/uiautomator-unicode-input-helper
导入其中的Utf7Ime , 生成apk并安装设置成默认输入法
把 helper-library 里面的Utf7ImeHelper.java导入自己的公用方法库,用于把字符串decode成ASCII码
最后生成脚本是这样的:
下一步考虑如何将这个功能集成到脚本录制工具中去。
文章转载于:http://testerhome.com/topics/408
有空验证的同学,验证完后记得在博客上留言验证结果。
通过设置中文输入法为默认,UiObject.setText("pinyin ") 的方式,可以实现中文输入,但是只能输入一些固定的词组。
github上发现了一个 utf7ime 的好东西,可以实现中文输入,英文输入,中英文混合输入。简单来说,支持输入任何unicode编码的字符。
原理是:UiObject.setText( String) 只能接受ASCII码,整个过程是输入的unicode编码的字符串decode成ASCIl码,setText接受这些ASCll码再通过utf7ime这个输入法encode成unicode编码的字符串输出。
前置条件:手机装入此输入法并将之设为默认输入法
简单说一说整个过程,
打包下载 https://github.com/sumio/uiautomator-unicode-input-helper
导入其中的Utf7Ime , 生成apk并安装设置成默认输入法
把 helper-library 里面的Utf7ImeHelper.java导入自己的公用方法库,用于把字符串decode成ASCII码
最后生成脚本是这样的:
import com.android.uiautomator.core.UiObject;import com.android.uiautomator.core.UiObjectNotFoundException;import com.android.uiautomator.core.UiSelector;import com.android.uiautomator.testrunner.UiAutomatorTestCase;import com.sn.test.testUtil.AppAPI;import com.sn.test.testUtil.Utf7ImeHelper;public class TestInput extends UiAutomatorTestCase { private String caseName = this.getClass().getSimpleName(); private String caseDetail = ""; private String description = ""; private boolean result = false; protected void setUp() throws Exception { super.setUp(); AppAPI.setUp(caseName); } public void testDemo() throws UiObjectNotFoundException, RemoteException { new UiObject(new UiSelector().className("android.widget.TextView") .text("信息")).clickAndWaitForNewWindow(); sleep(1000); new UiObject(new UiSelector().className("android.widget.RadioButton") .text("新信息")).clickAndWaitForNewWindow(); sleep(1000); new UiObject(new UiSelector().className("android.widget.EditText")) .setText(Utf7ImeHelper.e("test test yingwen 中文一起输入")); sleep(1000);
下一步考虑如何将这个功能集成到脚本录制工具中去。
文章转载于:http://testerhome.com/topics/408
有空验证的同学,验证完后记得在博客上留言验证结果。
更多相关文章
- 环境搭建好后的第一个Android(安卓)项目
- 6573 GPIO 设置
- Android(安卓)EditText禁止输入中文字符
- 输入adb shell,提示device not found
- @功能 中用到 android EditText插入字符串到光标所在位置
- 使用fiddler抓包手机请求数据
- 代码设置EditText只输入数字、字母
- Android(安卓)验证输入的必须为汉字
- android 中bitmap与String(base64) byte[]、和drawable的互相转换