Robot FrameworkとAppium、Pythonによるテスト環境構築手順

最近Appiumについて調査し、ローカル環境にテスト環境を構築したので、その手順を記録します。

1.JDKのインストールと設定

Java開発時にJDKをインストールしましたが、Oracle公式サイトからのダウンロードではなく、Android SDKをダウンロード後にSDK Manager.exeを実行すると即座に終了する問題が発生しました。その後、Oracle公式のJDKを再ダウンロードして環境変数を設定したところ、SDK Manager.exeが正常に起動するようになりました。

2.Node.jsのインストール

Node.jsのインストール手順はネットで検索できます。ここではDesktop版のAppium-Server-GUI-windowsを使用しています。

3.Android SDKのダウンロード

URL: https://www.androiddevtools.cn/ にアクセスし、ANDROID_HOMEというシステム変数を設定します。さらに、環境変数PATHに%ANDROID_HOME%\toolsと%ANDROID_HOME%\platform-toolsを追加してください。

管理者権限でSDK Manager.exeを実行し、以下の画面にあるInstalledのパッケージを選択してダウンロードします。ダウンロードには時間がかかるため、待機してください。

4.Appium ServerとAppium Inspectorのダウンロード

ダウンロード元: https://github.com/appium からAppium ServerおよびAppium Inspectorを取得します。

5.Androidエミュレータのインストール

私は夜神エミュレータを使用しています。インストール後、コマンドプロンプトで「adb devices」を実行すると、エミュレータの一覧が表示されます。もし「list of devices attached」のようなエラーが出る場合は、adb kill-serverとadb start-serverを実行してadbサービスを再起動してください。

初期状態ではタブレットモードでしたが、設定からスマホモードに切り替えることができます。

6.Appium Doctorのインストール

コマンドラインで以下のコマンドを実行してappium-doctorをインストールします:npm -g install appium-doctor。

インストール後、appium-doctorを実行して設定が正しく行われているか確認します。warnメッセージは無視しても構いませんが、errorメッセージは注意が必要です。

7.Appium Serverの起動

テストケース内でadb shellコマンドを実行する必要があるため、「Relaxed Security」オプションを有効にする必要があります。

8.エミュレータの起動

「adb devices」コマンドを実行してエミュレータを確認します。

9.Appium Inspectorの起動

Remote Pathに/wd/hubを入力し、Capabilityを設定します。platformVersionにはエミュレータのバージョンを指定します。appPackageは連絡先アプリを指すように設定します。appPackageとappActivityの取得方法は、エミュレータ上でアプリを起動した後、adb shell dumpsys window windowsコマンドを使用します。

{
  "platformName": "Android",
  "appium:platformVersion": "7.1.2",
  "appium:deviceName": "127.0.0.1:62001",
  "appium:appPackage": "com.android.contacts",
  "appium:appActivity": "com.android.contacts.activities.PeopleActivity",
  "appium:noReset": true,
  "appium:newCommandTimeout": "600",
  "appium:autoGrantPermissions": false
}

最後に「Start Session」ボタンをクリックしてセッションを開始します。

10.Appium Inspectorの更新

最初はAppium Inspectorのページを更新する方法が分からず、左側の要素が更新されずXPathなどの情報を取得できませんでした。しかし、エミュレータとの連携が原因であることに気づき、エミュレータ上でページを開いた後に、Appium Inspectorの上部にある円形ボタンをクリックすることでページを更新できることが判明しました。これにより、新しいページの要素をXPathで取得することが可能になります。

11.Pythonライブラリのインストール

Robot Frameworkの環境構築については省略します。主に以下の2つのライブラリをインストールします。

pip install Appium-Python-Client

pip install robotframework-appiumlibrary

12.テストスクリプトの作成

まずAppiumLibraryをインポートし、ここでは連絡先を追加するためにユーザー操作を模倣します。

*** Settings ***
Library           AppiumLibrary

*** Test Cases ***
test123
    Open Application    http://127.0.0.1:4723/wd/hub    alias=myapp1    platformName=Android    platformVersion=7.1.2    deviceName=127.0.0.1:62001    appPackage=com.android.contacts    appActivity=com.android.contacts.activities.PeopleActivity
    sleep    3
    Execute Adb Shell    pm grant com.android.contacts android.permission.READ_CALENDAR
    Execute Adb Shell    pm grant com.android.contacts android.permission.ACCESS_FINE_LOCATION
    Execute Adb Shell    pm grant com.android.contacts android.permission.READ_SMS
    sleep    2
    Click element    id=com.android.contacts:id/floating_action_button
    sleep    2
    Click element    id=com.android.contacts:id/left_button
    sleep    2
    Input Text    xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='姓名']    cuiyw
    sleep    2
    Click element    xpath=//android.widget.Spinner[@content-desc="电话"]/android.widget.TextView
    sleep    1
    Click element    xpath=/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.ListView/android.widget.CheckedTextView[2]
    sleep    1
    Input Text    xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='电话']    18575533041
    sleep    2
    Input Text    xpath=//*[@resource-id='com.android.contacts:id/editors']//android.widget.EditText[@text='电子邮件']    18575533041@qq.com
    sleep    2
    Click element    xpath=//android.widget.TextView[@content-desc="保存"]
    sleep    2

連絡先を追加する際に、位置情報、カレンダー、SMSの3つの権限要求が発生します。これらの権限を事前に許可するため、Execute Adb Shellキーワードを使用してアプリに権限を付与します。上記のExecute Adb Shell行をコメントアウトすると、権限許可ダイアログが表示されるようになります。

このテストを実行すると、連絡先に新しい情報が追加されます。

タグ: appium robotframework Python Android SDK

7月29日 02:31 投稿