すべてのプロダクト
Search
ドキュメントセンター

Mobile Testing - Deprecated:Android テストスクリプトの作成

最終更新日:Jan 17, 2025

モバイルテストは、Appium に基づいて記述された自動テストコードをサポートしています。

重要

モバイルテストは、pytest、unittest、Robot Framework などのサードパーティライブラリをサポートしています。別のフレームワークを使用する場合は、テクニカルサポートにお問い合わせください。

前提条件

  • Appium を使用した自動テストの方法を理解している必要があります。詳細については、「Appium ドキュメント」をご参照ください。

  • Python プログラミングの基本的なスキルが必要です。

背景情報

Android テストスクリプトを作成するには、次の操作を実行する必要があります。

手順 1:ケイパビリティファイルを作成する

desired_capabilities.py という名前のケイパビリティファイルを Python 言語で記述し、ルートディレクトリに保存します。

重要

desired_capabilities.py は、テストスクリプトがローカルで実行される場合にのみ、テスト環境を指定するために使用されます。

desired_capabilities.py ファイルには、get_uri() 関数と get_desired_capabilities() 関数が含まれています。

関数

説明

get_desired_capabilities()

現在のセッションのパラメーターをクエリします。

ビジネス要件に基づいてパラメーターを設定できます。詳細については、「Appium Desired Capabilities」をご参照ください。

get_uri()

Appium サーバーの URL を返します。

サンプル コード

#!/usr/bin/env python

def get_desired_capabilities():
    desired_caps = {
        'platformName': 'Android',
        'platformVersion': '7.0',
        'deviceName': 'V889F',
        'appPackage': 'com.alibaba.mts.mtsdemoapp',
        'appWaitPackage': 'com.example.Android.myapp',
        'app': 'D:/home/xx/xx/xx/xx.apk',
        'newCommandTimeout': 30,
        'automationName': 'Appium'
    }
    return desired_caps

def get_uri():
    return "http://localhost:50000/wd/hub"

パラメータの説明

  • 次の表は、get_desired_capabilities() 関数で設定されるパラメーターについて説明しています。

パラメーター

説明

platformName

テスト デバイスのシステム タイプ。有効な値:Android および iOS。

platformVersion

テスト デバイスのシステム バージョン。

deviceName

テスト デバイスの名前。

appPackage

テスト対象 アプリのパッケージ名。このパラメーターは Android システムでのみ有効です。

appWaitPackage

テスト中に起動を待機しているアプリのパッケージ名。このパラメーターは Android システムでのみ有効です。

app

アプリ インストール ファイルのストレージ パス。

newCommandTimeout

2 つのコマンド間で許容される最大 時間 間隔。単位:秒。

2 つのコマンド間の 時間 間隔が指定された値を超えると、Appium サーバーは現在のセッションを終了します。

automationName

現在のセッションで使用されるオートメーション エンジンの名前。

  • デバイスのシステム バージョンが Android 4.2 より前の場合は、値を Selendroid に設定します。

  • デバイスのシステム バージョンが iOS 4.2 または Android 4.2 以降の場合は、値を Appium に設定します。

  • デフォルトでは、オンプレミス Appium サーバーのリスナー ポートは 50000 に設定されています。この場合、get_uri() の戻り値は http://localhost:50000/wd/hub です。

ステップ 2: テストスクリプトを作成する

Python 言語で main.py という名前のテストスクリプトを作成し、ルートディレクトリに保存します。このスクリプトは、自動テストを実行するためのエントリとして使用されます。

説明

モバイルテストは、main.py テストスクリプトを実行することで機能テストを実装します。

サンプルコードと説明:

# -*- coding: utf-8 -*-

from appium import webdriver

# ルートディレクトリに作成された desired_capabilities.py ファイルをインポートします。
import desired_capabilities

# Python の unittest を単体テストツールとして使用します。
from unittest import TestCase

# Python の unittest を単体テストツールとして使用します。
import unittest

# time.sleep(xx) 関数を使用して、現在のスレッドの実行を指定された秒数だけ一時停止します。
import time

class MqcTest(TestCase):

   global automationName

   def setUp(self):
       # 指定された機能をクエリし、Appium サーバーに対応するセッションの作成を通知します。
       desired_caps = desired_capabilities.get_desired_capabilities()
       # Appium サーバーの URL をクエリします。
       uri = desired_capabilities.get_uri()
       # 使用されているテストフレームワークをクエリします。
       self.automationName = desired_caps.get('automationName')
       # セッションを作成し、すべてのデバイス操作をカプセル化するドライバーオブジェクトをクエリします。
       self.driver = webdriver.Remote(uri, desired_caps)

   def test_searchbox(self):
        # "Tab4" 文字列を含むコントロールを見つけます。
        if self.automationName == 'Appium':
            tab4 = self.driver.find_element_by_name("Tab4")
        else:
            tab4 = self.driver.find_element_by_link_text("Tab4")
        # "Tab4" 文字列を含むコントロールをクリックします。
        tab4.click()

        # 2 秒待機します。
        time.sleep(2)

        # コントロールクラス名でユーザー名とパスワードのフィールドを見つけます。
        editTexts = self.driver.find_elements_by_class_name("android.widget.EditText")
        # ユーザー名とパスワードを入力します。[0] はユーザー名、[1] はパスワードを指定します。
        editTexts[0].send_keys("admin")
        editTexts[1].send_keys("admin")
        # 表示されているソフトウェアキーボードを非表示にします。
        self.driver.hide_keyboard()

        # [ログイン] ボタンを見つけてクリックします。
        if self.automationName == 'Appium':
            self.driver.find_element_by_name("Log On").click()
        else:
            self.driver.find_element_by_link_text("Log On").click()
        # ログインプロセスが完了するまで 3 秒間待機します。
        time.sleep(3)

   def tearDown(self):
        # テストは完了です。セッションを終了します。
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

手順 3: Appium サーバーを起動する

appium コマンドを CLI で実行して、Appium サーバーを起動します。例: appium -p 50000

パラメータ

パラメータ

説明

-p

Appium サーバーのリスナー ポートを指定します。

-a

Appium サーバーの IP アドレスを指定します。

--selendroid-port

Selendroid モードでの Android Debug Bridge (adb) のポートを指定します。

-U

複数のデバイスが Appium サーバーに接続されている場合に、テスト デバイスのシリアル番号を指定します。

--full-reset

テストケースの実行後にデバイスをクリーンアップすることを指定します。

手順 4: テストスクリプトを確認する

  1. モバイルフォンをコンピュータに接続します。

    • 開発者モードが有効になっているモバイルフォンをコンピュータに接続します。

    • リモートデバイスに接続し、adb connect コマンドを実行してから、リモートデバイスをコンピュータに接続します。

  2. CLI で python main.py コマンドを実行して、main.py テストスクリプトを実行および確認します。

手順 5: テストスクリプトを Mobile Testing コンソールにアップロードする

  1. main.py ファイルをルートディレクトリで ZIP ファイルに圧縮します。

  2. Mobile Testing コンソールで、main.py ファイルをアップロードして、[スクリプト] を作成します。このスクリプトは、Android デバイスでの後続の機能テストに使用されます。

    スクリプトの作成方法の詳細については、「スクリプトを作成する」をご参照ください。