はじめに
前回のInside appium for androidは、ログを紹介しただけだったが、今回は、appiumのドキュメントを参考にappiumの内部構造について書く。
Appium動作環境
アプリ動作環境(端末)とテスト実行環境から構成される。
アプリ動作環境
端末は、$ adb devices
で表示されるものであれば、実機、エミュレータのどちらでもOK。
アプリ
開発したアプリ、プレインストールアプリどちらでもOK。
テストのための変更は不要。
これが、appiumのコンセプトになっている。
テスト実行環境
テストを実行するPC。
Appium(server)
Node.jsベースのHTTPサーバ。Appium(client)からの要求を端末上のアプリに仲介する。
iOS、AndroidともにSDKで提供されているツールを使ってアプリと通信する。
Androidはバージョンによって異なるツールを使う。
Instructionを使った通信には、Selendroidを使っている。
OS | ツール |
---|---|
iOS | UIAutomation |
Android | UIAutomator (4.2+) |
Instruction (2.3+) |
Appuium(clinet)
テストを読み込み、Appium(server)に要求を実行する。
Appium(server)とSeleniumのThe webdriver wire protocolで通信する。
各種言語のバインディングがある。
* ruby
* python
* java
* javascript
* php
* c#
補足
session
appiumとアプリ(端末)との通信は、sessionで管理されている。
テスト開始(WebDriver作成)時に作成したsessionを、終了(WebDriver破棄)時まで使う。
Desired Capabilities
Appium用WebDriver(AppiumDriver)作成時、テスト対象について詳細な記述をする仕組み。
プラットフォーム、テスト対象アプリに関する記述を行う。
これは、Java言語でAndroid上でブラウザ(Chrome)を使ってテストする時の例。アプリの場合には、パッケージ名なども指定する。
java
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("browserName", "chrome");
driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
おわりに
次は、appiumのドキュメントを日本語訳しようかな、それとも、コードリーディングしようかな。