UiAutomator 不支持中文输入。
通过设置中文输入法为默认,UiObject.setText("pinyin ")
的方式,可以实现中文输入,但是只能输入一些固定的词组。
github 上发现了一个 utf7ime
的好东西,可以实现中文输入,英文输入,中英文混合输入。简单来说,支持输入任何 unicode 编码的字符。
原理是:UiObject.setText( String) 只能接受 ASCII 码,整个过程是输入的 unicode 编码的字符串 decode 成 ASCIl 码,setText 接受这些 ASCll 码再通过 utf7ime 这个输入法 encode 成 unicode 编码的字符串输出。
前置条件:手机装入此输入法并将之设为默认输入法
简单说一说整个过程,
最后生成脚本是这样的:
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);
下一步考虑如何将这个功能集成到脚本录制工具中去。