Okada Hiroshi の blog

typo が多いです

Native Driver という Google製のテストフレームワークの Android 版がかなり、良いので使って見ました。

http://code.google.com/p/nativedriver/

基本、サンプルどうりにやると動くのですが selenium というものをベースにしているので、リファレンスをあちこち 見回らないといけないので、使いそうなところをまとめてみました。

  • AndroidNativeDriver -- public メソッド --- List findAndroidNativeElements(By by) --- AndroidNativeElement findElement(By by) --- WebElement findElementByPartialText(String using) // 指定した部分文字列を text に持っているエレメントを得る --- WebElement findElementByText(String using) // 指定した文字列を text に持っているエレメントを得る --- List findElementsByPartialText(String using) // 指定した部分文字列を text に持っているエレメントのリストを得る --- List findElementsByText(String using) // 指定した文字列を text に持っているエレメントのリストを得る --- AdbConnection getAdbConnection() --- ScreenOrientation getOrientation() // スクリーンの向きを得る --- X getScreenshotAs(OutputType target) throws AdbException // スクリーンショットを撮る --- Keyboard getKeyboard() // キーボードインターフェースを取得する --- AndroidNativeNavigation navigate() // 操縦するための AndroidNativeNavigation オブジェクトを取得する。 --- void rotate(ScreenOrientation orientation) // 画面を回転する --- void startActivity(String activityClass) // 指定したクラス名のアクティビティーを起動する
  • AndroidNativeNavigation -- public メソッド --- void toActivity(String activityClass) // 指定したクラス名のアクティビティーを起動する --- void back() --- void forward() --- void to(String url) // 指定した URL を開く --- void to(URL url) // 指定した URL を開く --- void refresh()
  • WebElement (org.openqa.selenium.WebElement) インタフェース -- public メソッド --- void clear() // もしこのエレメントがテキストエレメントならばクリアする --- void click() // クリックする --- String getAttribute(String name) // このエレメントの指定した名前のアトリビュートを得る --- Point getLocation() // このエレメントの座標を得る --- Dimension getSize() // このエレメントのサイズを得る --- String getText() // このエレメントのテキストを得る --- boolean isDisplayed() // このエレメントが表示されているかどうかを返す --- boolean isSelected() // このエレメントが選択されているかどうかを返す --- void sendKeys(CharSequence... keysToSend) // このエレメント上でキュー入力をシミュレートして値をセットする
  • Keyboard (org.openqa.selenium.Keyboard) インターフェース -- public メソッド --- void pressKey(Keys keyToPress) --- void releaseKey(Keys keyToRelease) --- void sendKeys(CharSequence... keysToSend)
  • Keys (org.openqa.selenium.Keys) 列挙型 -- 定数 --- ADD ALT ARROW_DOWN ARROW_LEFT ARROW_RIGHT ARROW_UP --- BACK_SPACE CANCEL CLEAR COMMAND CONTROL DECIMAL --- DELETE DIVIDE DOWN END ENTER EQUALS ESCAPE --- F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 HELP --- HOME INSERT LEFT LEFT_ALT LEFT_CONTROL LEFT_SHIFT --- META MULTIPLY NULL NUMPAD0 NUMPAD1 NUMPAD2 NUMPAD3 --- NUMPAD4 NUMPAD5 NUMPAD6 NUMPAD7 NUMPAD8 NUMPAD9 --- PAGE_DOWN PAGE_UP PAUSE RETURN RIGHT SEMICOLON
    --- SEPARATOR SHIFT SPACE SUBTRACT TAB UP ZENKAKU_HANKAKU -- public メソッド --- static Keys values() // 定義されているキーの一覧を得る --- static Keys valueOf(String name) // 指定された名前のキーを返す --- static String chord(CharSequence... value) // 一つの和音のように複数のキーが押されたのをシミュレートする --- char charAt(int index) --- int length() --- CharSequence subSequence(int start,int end) --- String toString()
  • ScreenOrientation (org.openqa.selenium.ScreenOrientation) 列挙型 -- 定数 --- LANDSCAPE --- PORTRAIT
  • OutputType (org.openqa.selenium.OutputType) インタフェース -- static フィールド --- OutputType BASE64 --- OutputType<byte> BYTES --- OutputType FILE

なお、スクリーンショットを撮るには、 AndroidNativeDriver オブジェクトを作るときに AdbConnection を渡す必要がありました。

|java|  // ....

static final String ADB_PATH = "/home/hiroshi/android-sdk-linux_x86/platform-tools/adb"; static final String PNG_PATH = "/home/hiroshi/screenshot.png"; private AndroidNativeDriver driver;

// ...

protected AndroidNativeDriver getDriver() { AdbConnection adbc = new AdbConnectionBuilder() .withAdbPath(ADB_PATH) .build(); return new AndroidNativeDriverBuilder() .withDefaultServer() .withAdbConnection(adbc) .build(); }

// ...

driver = getDriver();

// ...

    // スクリーンショットを撮る
    byte[] ss = driver.getScreenshotAs(OutputType.BYTES);
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(PNG_PATH);
        fos.write(ss);
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

// ... ||<