Appiumインストール(Windows),テスト準備をKatalon Studioで実施【Android,Groovy,Java】

モバイルデバイステスト自動化OSS、「Appium」を以前にご紹介しました。

https://nine-num-98.blogspot.com/2019/05/appium.html

Appiumの仕組み(アーキテクチャ)について説明しております。記事中でも紹介しましたが、Appiumの詳細については、以下の本などが参考になると思います。


実践 Appium
実践 Appium
posted with amazlet at 19.05.04
Manoj Hans
オライリージャパン
売り上げランキング: 466,285


さて。今回はAppiumの具体的なコマンドやそれを利用したテストコードについて触れてみたいと思います。Appiumの開発環境は色々あるみたいですが、以前もご紹介した、フリーウェア、Katalon Studioを導入したうえで、コードを書いてみるのが一番簡単かなと。

以下では、AndroidでChromeブラウザを開き、URLに入力したページ(Yahoo)の要素を検証する簡単なテストケーススクリプトについて紹介します。

開発環境

■OS
・Windows 10 Home 64bit

■アプリケーション、フレームワーク
・Katalon Studio (Version 5~)
・Appium (Version 1.16.0)

■プログラミング言語
・Groovy/Java

■モバイルデバイス
・OS
  Android 9
・テスト対象アプリ
  chrome

環境準備


■Appium&Katalon Studio インストール手順

以下の記事からインストール手順を抜粋して掲載します。
https://nine-num-98.blogspot.com/2019/05/katalon-studio.html


・Node.js インストール:
以下からダウンロードしてPCにインストール
https://nodejs.org/ja/download/

・Appium インストール:
コマンドプロンプトを開き、以下のコマンドを実行してインストール
npm install –g appium

・Katalon Studio インストール:
以下サイトからダウンロードしてPCにインストール。
https://www.katalon.com/
※メールアドレス登録等のサインアップが必要。
※初回起動時にメールアドレス&パスワードでのログインが必要。
【参考サイト】
Katalon Studioをインストールした - Qiita

・Katalon StudioにAppiumパスを設定:
ツールバーにある[Window]で[Katalon Studio Preferences]をクリック。
メニューの[Katalon]→[Mobile]を表示。
[Appium Directory]欄にappiumのインストール先パスを設定する。

(例)C:\Users\○○○\AppData\Roaming\npm\node_modules\appium


■PCとAndoridデバイス接続準備

・Androidデバイス条件:
 Android OS 6.0 ~


・デバイスを「開発者モード」に設定:
[設定]の[端末詳細]にある[ビルド番号]を連続タップ。
「開発者モード」になればOK。


・USBデバッグをONに設定:
[設定]の[開発者向けオプション]の[USBデバッグ]をONにする。


・PCとAndroidデバイスをUSBケーブルで接続



■Apkファイル準備

Androidデバイス実機から、ChromeブラウザアプリをPC内に取得します。

・PCのコマンドプロンプトを開く


・接続されているデバイスを確認:

adb devices


・chromeのapkを確認:

adb shell pm list packages -f | findstr chrome
package:〇〇〇.apk=com.android.chrome

コマンド結果中の、〇〇〇の部分がApkファイル名です。


・ApkファイルをPCに転送:

adb pull 〇〇〇.apk

これで、PCにApkファイルが転送されます。


上記手順については以下のサイトを参考にしました。
Android 実機から apk を探して取得 - clock-up-blog

Appiumスクリプト


■テストケース



ブラウザアプリ(Chrome)を開き、↑のページ(Yahoo)を表示させ、ページ中要素のテキストを検証します。処理をある程度細分化して並べると以下の通りです。

(1)ブラウザアプリを起動

(2)URLバーをタップ

(3)URLを入力してページを表示

(4)検証対象の要素が表示されるまで待機

(5)要素のテキストを取得

(6)テキストが期待値と一致するかを検証

(7)要素の有(数)を確認

(8)要素の無を確認

(9)下にスワイプして(7)の要素が無になるか検証

(10)ブラウザアプリを終了


■スクリプト

Katalon StudioテストケースのScript view画面に記述したコードを記します。
※Katalon StudioのScript view, Manual view等の基本事項は以下を参照ください
https://docs.katalon.com/katalon-studio/docs/create-test-case.html#tutorial-1


import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.webui.driver.WebMobileDriverFactory as WebMobileDriverFactory

import io.appium.java_client.TouchAction
import io.appium.java_client.android.AndroidDriver as AndroidDriver
import io.appium.java_client.android.AndroidElement as AndroidElement
import io.appium.java_client.touch.offset.ElementOption

//(1)ブラウザアプリを起動
apk_path = "C:\\Users\\Users\\Documents\\Katalon Studio\\App\\chrome.apk"
Mobile.startApplication(apk_path, false)
AndroidDriver driver = WebMobileDriverFactory.getDriver()

//(2)URLバーをタップ
AndroidElement url_bar = driver.findElementById("com.android.chrome:id/url_bar");
TouchAction action = new TouchAction(driver)
action.tap(ElementOption.element(url_bar)).perform();

//(3)URLを入力してページを表示
url = "http://yahoo.co.jp"
url_bar.sendKeys(url + "\\n");

//(4)検証対象の要素が表示されるまで待機
logo_xpath = "//hierarchy/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.view.ViewGroup[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[1]/android.view.View[2]/android.view.View[1]/android.view.View[1]"
AndroidElement yahoo_logo = driver.findElementByXPath(logo_xpath)

//(5)要素のテキストを取得
String text =  yahoo_logo.getText();
println(text)

//(6)テキストが期待値と一致するかを検証
assert text == "Yahoo! JAPAN"

//(7)要素有(数)を検証
List elms = driver.findElementsByXPath(logo_xpath)
num_elms = elms.size()
assert num_elms == 1

//(8)要素無を検証
List no_elms = driver.findElementsById("no_element")
num_no_elms = no_elms.size()
assert num_no_elms == 0

//(9)下にスワイプして(7)の要素が無になるか検証
action.longPress(PointOption.point(0, 800)).moveTo(PointOption.point(0, 0)).release().perform()
List elms2 = driver.findElementsByXPath(logo_xpath)
num_elms = elms2.size()
assert num_elms == 0

//(10)ブラウザアプリを終了
Mobile.closeApplication()


テストスクリプトの解説記事に続きます。
https://nine-num-98.blogspot.com/2020/04/appium-katalon-02.html

スポンサーリンク