Androidの自動テストツール uiautomator で、日本語のような非ASCII文字の入力を実現します。
uiautomatorには、テキストボックスに文字を入力するためのメソッド UiObject.setText(String) がありますが、このメソッドの引数にはASCII以外の文字列 (正確には、QWERTYキーボードを使って入力できない文字列) を指定することができません。
このプロジェクトでは、Modified UTF-7形式で入力された文字列を、デコードしてから テキストボックスに送り込むIMEを提供することで、上記制限を解決します。
ここでは、uiautomatorを使ったテストプロジェクトの作り方や、実行方法については 説明しません。既にuiautomatorを使ったテストプロジェクトが存在しているものとします。
uiautomatorを使ったことの無い方は、Android Developersのサイトにある、 UI Testing を参考にしてください。
ここでインストールしたUtf7Imeは、自動テスト用途のみを想定しているため、ソフトウェアキーボード は実装されていません。 そのため、以下の手順に従ってUtf7Imeを有効化した状態では、テキストボックスにフォーカスを当てても、 ソフトウェアキーボードが表示されず、全く文字を入力することができなくなってしまいます。
テストが終了したら、デフォルトのIMEを、通常利用するIMEに戻しておいてください。 IMEを元に戻す手順は以下の通りです。
- ホームキーを押し、ホーム画面を表示します。
- [Settings]アプリを起動します。
- [Language & input]を開きます。
- [KEYBOARD & INPUT METHODS]カテゴリにある、[Default]を押下し、 普段利用しているIMEを選択し直します。
Utf7Ime/
ディレクトリ配下をEclipseにインポートします。 [Import...]>[Existing Android Code Into Workspace] でインポートできます。Utf7Ime
プロジェクトをビルドし、テスト対象端末へインストールします。- テスト対象端末の[Settings]>[Language & input]を開きます。
- [KEYBOARD & INPUT METHODS]カテゴリにある、[UTF7 IME for UI Testing] のチェックボックスをチェックします。 IMEを有効化する時の警告ダイアログが表示されるため[OK]を押します。
- [KEYBOARD & INPUT METHODS]カテゴリにある、 [Default]を選択し、[UTF7 IME for UI Testing]をデフォルトのIMEに指定します。
helper-library/src
ディレクトリ配下のソースコードを、自分のuiautomatorプロジェクトの
src/
ディレクトリ配下へコピーします。
uiautomatorのプロジェクトでは、libs/
ディレクトリ配下にJARファイルを保存しても、
無視されてしまう点に注意してください。
以下のように、UiObject.setText()
の引数に指定する文字列について、Utf7ImeHelper.e()
でラップしてください。
import jp.jun_nama.test.utf7ime.helper.Utf7ImeHelper;
....
UiObject editText = ...;
editText.setText(Utf7ImeHelper.e("こんにちは"));
....
UiAutomatorInputSample/
ディレクトリ配下の実装例も参考にしてください。
なお、&
以外のASCII文字を入力するのであれば、Utf7ImeHelper.e()
でラップせずに、
setText()
の引数に直接入力しても問題ありません。
UiAutomatorInputSample/
ディレクトリ配下に、
uiautomatorで日本語を入力するサンプルプロジェクトが同梱されています。
このサンプルでは、Googleの検索ボックスに
「こんにちは!UiAutomatorで入力しています。」
と自動的に入力します。
サンプルプロジェクトをビルド・実行するには、ANDROID_HOME
環境変数を適切に設定した上で、
以下のコマンドを実行してください(antが必要です)。
なお、テスト対象端末のロケールは英語(English (United States))に設定しておく必要があります。
cd UiAutomatorInputSample
ant clean build install
adb shell uiautomator runtest UiAutomatorInputSample.jar \
-c jp.jun_nama.test.utf7ime.sample.UiAutomatorInputTest
このサンプルは、Android 4.4のNexus 7 (2013)上で動作を確認しています。 他のバージョンでは、Googleの検索ボックスのクラス名が異なるため、サンプルそのままでは動作しません。 その場合でも、検索条件部分を書き換えることで動作させることができると思います。
なお、このAndroidバージョンによる制限は、あくまでもサンプルアプリの制限です。Utf7Imeとヘルパーライブラリ自身は、uiautomatorが動作する端末であれば問題なく動作します。
Copyright 2013 TOYAMA Sumio <[email protected]>
Licensed under the
Apache License, Version 2.0.
This software contains jutf7-1.0.0 written by J.T. Beetstra, which is available under a MIT license.