Appiumに触れる(2)
操作を記録してみる
インスペクタの起動に成功したので試しにシナリオを記録してみます。本来は好きな言語で試してみてほしいのですが、ここではRubyを使いクライアントコードを記述します。Rubyを使うのは比較的短いコード量でテストスクリプトを記述可能なためです。
インスペクタ上部の、赤枠で囲ったような目のマークをクリックします。
記録の準備が整ったら以下の画面になります。
操作の基本は以下の繰り返しです。
- インスペクタ上で操作したい要素を選択
- インスペクタ右側の[Selected Element]から、行いたいアクションを指定する。
- 1、2を繰り返す
- 終えたら、目のマークの箇所が一時停止のマークに変化しているので、そこをクリック
試しに、[Accessibility]をタップし、さらに[Accessibility Service]をタップする、という簡単な操作を模倣してみます。
出力形式はデフォルトではおそらくJavaなので、適宜変更してください。
以下は[Ruby]を選択した時の出力です。
el1 = driver.find_elements(:accessibility_id, "Accessibility") el1.click el2 = driver.find_elements(:accessibility_id, "Accessibility Service") el2.click
この記録された操作の前後でAppiumサーバの起動やアプリの起動を行うコードを用意すると、[Accessibility Service]の要素の画面を表示することができるようになります。
では、これを元に簡単なテストスクリプトを記述します。最終的には、以下のように、タイトルに「Accessibility/Accessibility Service」と書かれている画面が表示されることを目指します。
$ gem install appium_lib
appium_example.rbというファイルを作成し、以下のコードを記述します。この時、インスペクタは停止させておいてください。一度Appiumサーバを停止し、再度起動すると楽です。また、忘れずにAndroid OS 7.1.1のエミュレータを起動させておいてください。
require 'appium_lib' class AppiumTest CAP = { caps: { platformName: 'android', automationName: 'uiautomator2', platformVersion: '7.1.1', deviceName: 'Android Emulator', app: '/path/to/test/app/api.apk', appPackage: 'io.appium.android.apis', appActivity: 'io.appium.android.apis.ApiDemos' }, appium_lib: { wait: 60 } }.freeze attr_reader :driver def setup @driver = Appium::Driver.new(CAP, true).start_driver end def run_scenario el1 = driver.find_element(:accessibility_id, "Accessibility") el1.click el2 = driver.find_element(:accessibility_id, "Accessibility Service") el2.click # 要素が存在しない場合、 ::Selenium::WebDriver::Error::NoSuchElementError の例外が発生し、実行が停止する result = driver.find_element(:class_name, "android.widget.TextView") raise "Accessibility/Accessibility Serviceの画面ではありません" unless result.text == "Accessibility/Accessibility Service" driver.quit puts 'Tests Succeeded!' end end test = AppiumTest.new test.setup test.run_scenario
以下のように実行します。
$ ruby appium_example.rb
Androidエミュレータを見ていると、実行が進みアプリがインストールされ、所定の要素を2回ほどタップしたあと、Rubyの標準出力にTests Succeeded!
が表示されるはずです。
これで、簡単な実行はできました。
まとめ
ここまで、
- Appiumの最近の事情
- Appium Desktopを使った、要素の探索から操作の記録と簡単な実行
を説明してきました。また、それを実際に手を動かしながら体験してみました。
最近のモバイルアプリのGUIテスト実行環境をいうと、Appiumはユーザ操作に近い位置からのテスト自動化を推し進めます。一方で、それとは異なる類のUIテストむけのフレームワークも存在します。もちろん、できること/できないことにも差が出てきます。そのため、それぞれのフレームワークの特性を経験し、目的に応じてより良い方法を利用できるようになると良いですね。
この記事が、Appiumを経験するきっかけになればと思います。