OkadaHiroshiの日記 このページをアンテナに追加 RSSフィード

2011-09-14

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

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

基本、サンプルどうりにやると動くのですが selenium というものをベースにしているので、リファレンスをあちこち

見回らないといけないので、使いそうなところをまとめてみました。

  • AndroidNativeDriver
    • public メソッド
      • List<AndroidNativeElement> findAndroidNativeElements(By by)
      • AndroidNativeElement findElement(By by)
      • WebElement findElementByPartialText(String using) // 指定した部分文字列を text に持っているエレメントを得る
      • WebElement findElementByText(String using) // 指定した文字列を text に持っているエレメントを得る
      • List<WebElement> findElementsByPartialText(String using) // 指定した部分文字列を text に持っているエレメントのリストを得る
      • List<WebElement> findElementsByText(String using) // 指定した文字列を text に持っているエレメントのリストを得る
      • AdbConnection getAdbConnection()
      • ScreenOrientation getOrientation() // スクリーンの向きを得る
      • <X> X getScreenshotAs(OutputType<X> 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<T> (org.openqa.selenium.OutputType) インタフェース
    • static フィールド
      • OutputType<String> BASE64
      • OutputType<byte[]> BYTES
      • OutputType<File> FILE

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

 // .... 

  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();
        }

   // ...

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証