Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Appium入門

11,063 views

Published on

社内の学習教材として作成したものです。

Published in: Software

Appium入門

  1. 1. 1 Appium入門 株式会社SHIFT
  2. 2. 2  インストール  初めてのスクリプト  基本的な命令  参考書籍とURL アジェンダ
  3. 3. 3 インストール 3
  4. 4. 44  Mac  JDKのインストールと設定  Android Studioのインストールと設定  Appiumのインストールと設定  動作確認  Windows  JDKのインストールと設定  Android Studioのインストールと設定  Appiumのインストールと設定  動作確認 インストール
  5. 5. 5 Mac 5
  6. 6. 66  JDKのインストール  http://www.oracle.com/technetwork/java/javase/downloads/ jdk8-downloads-2133151.html  より、最新のJDKをインストールします JDKのインストールと設定
  7. 7. 77  JAVA_HOMEの設定  ~/.bashrcもしくは~/.bash_profileにJAVA_HOMEを追記します  上記にjavaコマンドへのパスを追記します  ターミナルを起動して、Javaのバージョンを確認します JDKのインストールと設定 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` export JAVA=$JAVA_HOME/bin $ java -version java version "1.8.0" Java(TM) SE Runtime Environment (build 1.8.0-b132) Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
  8. 8. 88  Android Studioのインストール  http://developer.android.com/intl/ja/sdk/index.html  より、Android Studioをインストールします Android Studioのインストールと設定
  9. 9. 99  ANDROID_HOMEの設定  ~/.bashrcもしくは~/.bash_profileにANDROID_HOMEを追記します  上記はインストールした環境によって異なるので、自分のホーム・ディ レクトリ以下にパスが存在することを確認した上で設定して下さい  続いて、Android SDK Toolsへのパスを追記します Android Studioのインストールと設定 export ANDROID_HOME=/Users/kenichiro_ota/Library/Androi d/sdk export PATH=/Users/kenichiro_ota/Library/Android/sdk/tools:/ Users/kenichiro_ota/Library/Android/sdk/platform- tools:$PATH
  10. 10. 1010  adbによる動作確認  ターミナルを起動して、adbの動作を確認します Android Studioのインストールと設定 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
  11. 11. 1111  CLI版のインストールと確認  brewがインストールされていない場合、インストールします  Node.jsがインストールされていない場合、インストールします  AppiumとWebDriverをインストールします Appiumのインストールと設定 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/i nstall)" $ brew install node $ npm install -g appium $ npm install -g wd
  12. 12. 1212  appium-doctorの実行  appium-doctorを実行し、Appiumを実行できる準備が整っていることを 確認します Appiumのインストールと設定 $ appium-doctor Running iOS Checks ✔ Xcode is installed at /Applications/Xcode.app/Contents/Developer ✔ Xcode Command Line Tools are installed. ✔ DevToolsSecurity is enabled. ✔ The Authorization DB is set up properly. ✔ Node binary found at /usr/local/bin/node ✔ iOS Checks were successful. Running Android Checks ✔ ANDROID_HOME is set to "/Users/kenichiro_ota/Library/Android/sdk" ✔ JAVA_HOME is set to "/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home." ✔ ADB exists at /Users/kenichiro_ota/Library/Android/sdk/platform-tools/adb ✔ Android exists at /Users/kenichiro_ota/Library/Android/sdk/tools/android ✔ Emulator exists at /Users/kenichiro_ota/Library/Android/sdk/tools/emulator ✔ Android Checks were successful. ✔ All Checks were successful
  13. 13. 1313  GUI版Appiumのインストール  http://appium.io/  より、GUI版Appiumをインストールします Appiumのインストールと設定
  14. 14. 1414  Appiumのサンプルコードのgit clone  AVD Managerの起動  Android Studioを起動します  メニュー[Tools]-[Android]-[AVD Manager]  AVDの起動  デフォルトで作成されているAVDを起動します 動作確認 $ git clone https://github.com/appium/sample-code.git
  15. 15. 1515  GUI版Appiumの起動と設定  Appiumを起動したら、Androidアイコンをクリックし、Android Settings の画面を表示します 動作確認
  16. 16. 1616  App Pathの設定  App Pathにチェックを入れ、git cloneしたディレクトリ以下にある "ApiDemos-debug.apk"を指定します 動作確認
  17. 17. 1717  Appium Inspectorの起動  Androidアイコンを再度クリックして、Android Settingsを閉じます  Launchボタンを押します  Appium Inspectorボタンを押します 動作確認
  18. 18. 1818  Appium Inspectorの動作確認  Mac版のAppium InspectorではAppium Inspectorからテスト対象アプリ ケーションを操作したり、Appiumのスクリプトを生成できたりするので、 色々試してみて下さい 動作確認
  19. 19. 19 Windows 19
  20. 20. 2020  JDKのインストール  http://www.oracle.com/technetwork/java/javase/downloads/ jdk8-downloads-2133151.html  より、最新のJDKをインストールします JDKのインストールと設定
  21. 21. 2121  JAVA_HOMEの設定  [コントールパネル]-[システム]-[システムの詳細設定]-[システムのプ ロパティ]を開きます  [環境変数]ボタンを押し、環境変数ダイアログを開きます  [システム環境変数]で[新規]ボタンを押し、JAVA_HOMEを追加します  変数値はインストールしたJDKのバージョンによって異なるので、場所を 確認した上で追加して下さい JDKのインストールと設定
  22. 22. 2222  Android Studioのインストール  http://developer.android.com/intl/ja/sdk/index.html  より、Android Studioをインストールします Android Studioのインストールと設定
  23. 23. 2323  ANDROID_HOMEの設定  [コントールパネル]-[システム]-[システムの詳細設定]-[システムのプ ロパティ]を開きます  [環境変数]ボタンを押し、環境変数ダイアログを開きます  [システム環境変数]で[新規]ボタンを押し、ANDROID_HOMEを追加し ます  変数値はインストールした環境によって異なるので、自分のホーム以下 にパスが存在することを確認した上で設定して下さい JDKのインストールと設定
  24. 24. 2424  Android SDK Toolsのパスの追記  [コントールパネル]-[システム]-[システムの詳細設定]-[システムのプ ロパティ]を開きます  [環境変数]ボタンを押し、環境変数ダイアログを開きます  [システム環境変数]で"Path"を選択し、[編集]ボタンを押し、Android SDK Toolsへのパスを追加します  変数値はインストールした環境によって異なるので、自分のホーム以下 にパスが存在することを確認した上で設定して下さい JDKのインストールと設定
  25. 25. 2525  GUI版Appiumのインストール  http://appium.io/  より、GUI版Appiumをインストールします Appiumのインストールと設定
  26. 26. 2626  Appiumのサンプルコードのgit clone  AVD Managerの起動  Android Studioを起動します  メニュー[Tools]-[Android]-[AVD Manager]  AVDの起動  デフォルトで作成されているAVDを起動します 動作確認 > git clone https://github.com/appium/sample-code.git
  27. 27. 2727  GUI版Appiumの起動と設定  Appiumを起動したら、Androidアイコンをクリックし、Android Settings の画面を表示します 動作確認
  28. 28. 2828  GUI版Appiumの起動と設定  Appiumを起動したら、Androidアイコンをクリックし、Android Settings の画面を表示します  App Pathにチェックを入れ、git cloneしたディレクトリ以下にある "ApiDemos-debug.apk"を指定します 動作確認
  29. 29. 2929  Appium Inspectorの起動  Androidアイコンを再度クリックして、Android Settingsを閉じます  Launchボタンを押します  Appium Inspectorボタンを押します 動作確認
  30. 30. 3030  Appium Inspectorの動作確認  現状のWindows版のAppium Inspectorは画面上で直接操作ができな いなどMac版に比べて機能が限定されています  Appium Inspectorを使ってアプリケーションの動作確認をする場合、 Macの環境を使用することをお勧めします 動作確認
  31. 31. 31 初めてのスクリプト 31
  32. 32. 32  AVDの起動  CLI版Appiumサーバーの起動  sauce_appium_junitのインポート  AndroidTestの実行  AndroidTestの解説 初めてのスクリプト
  33. 33. 3333  Appiumのサンプルコードのgit clone  AVD Managerの起動  Android Studioを起動します  メニュー[Tools]-[Android]-[AVD Manager]  AVDの起動  デフォルトで作成されているAVDを起動します AVDの起動 (起動してない場合) $ git clone https://github.com/appium/sample-code.git
  34. 34. 3434  Appium Inspectorの終了  これまでのステップでAppium Inspectorを起動していた場合、終了して 下さい  CLI版Appiumサーバーの起動  ターミナルから、CLI版Appiumサーバーを起動します Mac : CLI版Appiumサーバーの起動 $ appium & [1] 73411 $ info: Welcome to Appium v1.4.16 (REV ae6877eff263066b26328d457bd285c0cc62430d) info: Appium REST http interface listener started on 0.0.0.0:4723 info: Console LogLevel: debug
  35. 35. 3535  Appium Inspectorの起動  Appium Inspectorの裏でAppiumサーバーが起動しているので、 Appium Inspectorは起動したままにして下さい Windows : Appiumサーバーの起動
  36. 36. 3636  sauce_appium_junitのインポート  IntelliJ IDEAを起動し、git cloneしたsample-code以下のsample- code/examples/java/junitをインポートします sauce_appium_junitのインポート
  37. 37. 3737  external modelの選択  Mavenを選択します sauce_appium_junitのインポート
  38. 38. 3838  AndroidTestの実行  src/test/java/com.saucelabs.appium/AndroidTestを開きます  右クリック-[Run 'AndroidTest']で実行します AndroidTestの実行
  39. 39. 3939  DesiredCapabilities  Appiumでのテスト対象アプリケーションの起動は、apkインストールや Intent指定、Activity指定、ブラウザ指定などいくつかの方法がありま すが、これらを設定するのがDesiredCapabilitiesです  ある程度設定が近ければ、platformVersionが異なったりしても起動で きます AnroidTestの解説 @Before public void setUp() throws Exception { File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin"); File app = new File(appDir, "ApiDemos-debug.apk"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", "io.appium.android.apis"); capabilities.setCapability("appActivity", ".ApiDemos"); driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); }
  40. 40. 4040  AndroidDriver  AndroidDriverはWebDriverを継承しているので、findElementほか WebDriverのメソッドはすべて使用できます  pinch, tap, zoom, swipeなどモバイル固有の操作はWebElementを MobileElementにキャストすると使用できるようになります AnroidTestの解説 @Test public void apiDemo(){ WebElement el = driver.findElement(By.name("Animation")); assertEquals("Animation", el.getText()); el = driver.findElementByClassName("android.widget.TextView"); assertEquals("API Demos", el.getText()); el = driver.findElement(By.name("App")); el.click(); List<WebElement> els = driver.findElementsByClassName("android.widget.TextView"); assertEquals("Activity", els.get(2).getText()); }
  41. 41. 41 基本的な命令 41
  42. 42. 42  WebDriverとの互換命令  AppiumDriverの命令  iOSの固有の設計 初めてのスクリプト
  43. 43. 4343  WebElementとfindElement  By.nameやBy.xpathも同じように使用できます  ただし、By.nameはname属性ではなく、実際に設定されているテキストを 対象にします WebDriverとの互換命令 @Test public void findElementByName() throws Exception { WebElement webElement = driver.findElement(By.name("App")); assertThat(webElement.getText(), is("App")); webElement.click(); driver.navigate().back(); } @Test public void findElementByXpath() throws Exception { WebElement webElement = driver.findElement(By.xpath("//android.view.ViewGroup[1]/android.widget.FrameLayout[2]/a ndroid.widget.ListView[1]/android.widget.TextView[3]")); assertThat(webElement.getText(), is("App")); webElement.click(); driver.navigate().back(); }
  44. 44. 4444  AppiumDriverとMobileElement  モバイル独自のロケーターの取得メソッド findElementByAccessibilityIdなどがあります  MobileElementのtap, pinch, swipeなどは実際にはAppiumDriverに委 譲されています AppiumDriverの命令 @Test public void findElementByName() throws Exception { MobileElement mobileElement = driver.findElementByAccessibilityId("App"); assertThat(mobileElement.getText(), is("App")); mobileElement.tap(1, 1000); driver.navigate().back(); }
  45. 45. 4545  ライフサイクル関係のメソッド  Appiumサーバーと接続できるセッションは同時に1つという制限があり ます  このため、アプリまたぎの検証は一度現在のセッションを終了して、別 アプリを再度AppiumDriverをnewして起動する必要があります AppiumDriverの命令 @Test public void appLifecycle() throws Exception { driver.resetApp(); driver.closeApp(); driver.launchApp(); driver.removeApp("io.appium.android.apis"); driver.quit(); driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); }
  46. 46. 4646  new, quit, resetApp  iOS Simulatorを使う場合、"appium --no-reset &"で起動し、new, quit, resetAppでiOS Simulatorが終了しないようにします  アプリケーションの再インストールには時間がかかるので、 @BeforeClassで一度だけインストールし、@BeforeでresetAppするよう にします iOS固有の設計 @BeforeClass public static void setUpClass() throws Exception { // set up appium File appDir = new File(System.getProperty("user.dir"), "../../../apps/TestApp/build/release- iphonesimulator"); File app = new File(appDir, "TestApp.app"); DesiredCapabilities capabilities = new DesiredCapabilities(); // 省略 driver = new IOSDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @Before public void setUp() { driver.resetApp(); }
  47. 47. 4747  アプリケーションのイメージファイル  実機とiOS Simulatorで別ファイルを用意する必要があります  *.ipa : 実機  *.app : iOS Simulator iOS固有の設計 @BeforeClass public static void setUpClass() throws Exception { // set up appium File appDir = new File(System.getProperty("user.dir"), "../../../apps/TestApp/build/release- iphonesimulator"); File app = new File(appDir, "TestApp.ipa"); // 実機 //File app = new File(appDir, "TestApp.app"); // iOS Simulator DesiredCapabilities capabilities = new DesiredCapabilities(); // 省略 capabilities.setCapability("udid", "f78d246eab5044129acd1167a5a57ff27000f7b2"); capabilities.setCapability("app", app.getAbsolutePath()); driver = new IOSDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); }
  48. 48. 4848  SafariによるWebアプリケーション  実機での設定が非常に複雑なため、iOS Simulatorでのスクリプト作 成をお勧めします iOS固有の設計 @Before public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "iPhone 6"); capabilities.setCapability("platformName", "iOS"); capabilities.setCapability("platformVersion", "9.2"); capabilities.setCapability("browserName", "safari"); driver = new IOSDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); //driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); }
  49. 49. 49 参考書籍とURL 49
  50. 50. 5050  参考書籍  URL 参考書籍とURL
  51. 51. 5151  Appium Essentials  http://www.amazon.co.jp/dp/B00VXDKV84  書籍としてAppiumの情報がまとまっている現在唯一のものとなります  本入門で扱ったインストールからAppium Inspectorの使い方、基本的 な命令をより深く説明しています 参考書籍
  52. 52. 5252  「Appiumの使い方」を分かり易くまとめてみました!  http://softwaretest.jp/labo/tech/labo-456/  弊社の山下一磨さんがまとめられている記事です  本入門の執筆の参考にさせて頂きました  ④AppiumでWebアプリのテストを実機で実行してみ た【iOS編】  http://qiita.com/tabbyz/items/1701a944784df76a9315  個別に嵌まった場合に本記事のような深い対策が必要なのがAppium の現状です URL

×