appium自動テストの詳細説明とフレームワーク構築

目次

1. Appium の概要    

2.Appiumの実戦(実機を例にします)


1. Appium の概要    

       Appium は、iOS および Android プラットフォーム上のネイティブ、モバイル ブラウザベースのハイブリッド アプリケーションをサポートするオープンソースの自動テスト ツールです。

1. 自動テストに appium を使用する利点

       Appium はさまざまなプラットフォームで標準の自動化 API を使用するため、クロスプラットフォームの場合に独自のアプリケーションを再コンパイルしたり変更したりする必要はありません。

       Appium は、Java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure、Perl 言語など、Selenium WebDriver でサポートされるすべての言語をサポートしており、Selenium WebDriver の API を使用できます。Appium はあらゆる種類のテスト フレームワークをサポートし、真のクロスプラットフォームの自動テストを実現します。(この記事では主にPythonの使い方を紹介します)

2. Appium アーキテクチャ

      Appium は Node.js で書かれた HTTP サーバーであり、iOS、Android などのさまざまなプラットフォームと対話するための複数の WebDriver セッションを作成および管理します。 

      Appium がテストを開始すると、テスト対象のデバイス (携帯電話) でサーバーが起動され、Appium サーバーからのコマンドがリッスンされます。iOS や Android などの各プラットフォームでは、実行方法と対話方法が異なります。したがって、Appium はスタブ プログラムを使用してプラットフォームを「ハッキング」し、テスト ケースの実行を完了するための指示を受け入れます。

      早速本題に入り、モバイル端末上で自動テストの実戦を行ってみましょう。

Appium 自動テスト ビデオ: 2023 年、APP 自動テスト プロジェクトの実戦を学ばなければなりません_哔哩哔哩_bilibili icon-default.png?t=N4HBhttps://www.bilibili.com/video/BV13g4y1G7QC/?spm_id_from=333.999.0.0

 

2.Appiumの実戦(実機を例にします)

       aapt dump badging D:\XXX.apk インストールパッケージのすべての情報を取得します

       adb デバイス (電話がコンピュータに接続されているかどうかを確認します)

       adb Shell pm list Packages: すべてのパッケージ名をリストし、表示されたパッケージのパッケージ名を見つけます。

       adb shell dumpsys package com.android.XXX: パッケージの特定の情報を表示します

       他の:

       adb devices: Android デバイスがコンピューターに接続されているかどうかを確認します。

       adb Shell dumpsys アクティビティ: 現在実行中のアクティビティ、実行中のプロセスなどを確認します。

       adb シェル dumpsys アクティビティ アクティビティ

       adbshel​​lpmlistpackages: すべてのパッケージ名をリストします。

       adb shell dumpsys パッケージ: インストールされているすべてのアプリケーション情報をリストします。

       adb shell dumpsys package com.android.XXX: パッケージの特定の情報を表示します

       adb shell dumpsys activity | grep mFocusedActivity: 現在再開されているアクティビティを確認します

       adb logcat | grep ActivityManager: 現在実行中のアクティビティを表示する

       adb logcat | grep 表示: 現在実行中のアクティビティを表示します。

1. 実デバイスまたはエミュレータに接続します (ここでは実デバイスを例にします)

       携帯電話を接続するときは、携帯電話の開発者モードを選択し、cmd でコマンド ライン ウィンドウを開き、「adb devices」と入力してデバイスの deviceName を取得することに注意してください。

       

2. アクティビティの取得

       cmd を使用してコマンド ライン ウィンドウを開き、 aapt dump badging D:\XXX.apk (xxx はインストール パッケージ名を指し、D:\ はパスを指します) と入力して、テストするアプリ インストール パッケージの特定の情報を直接表示します。

       

       マークされているのはパッケージ名で、下にドラッグし続けるとアクティビティ情報が表示されます。

       

       ここの赤丸のところにアクティビティ情報が表示されます。この2つの値はappiumスクリプト内で事前に取得する必要があるため、事前にこの取得方法を導入しておく必要があります。cmd で見た目が悪いと思われる場合は、cmd 情報を txt ファイルにエクスポートできます。たとえば、aapt dump badging shojibaidu.apk > 123.txt Enter キーを押すと、123.txt ファイルがデスクトップに生成されます。この情報を見つけるには、クエリで開きます。上記の方法により、Android SDK環境さえあれば、任意のパッケージのパッケージ名とActivity情報を取得することができます。

Appium 自動テスト:

2023 年には、APP 自動化テスト プロジェクトの実戦を学ばなければなりません_哔哩哔哩_bilibili icon-default.png?t=N4HBhttps://www.bilibili.com/video/BV13g4y1G7QC/?spm_id_from=333.999.0.0                   

3.Appiumを起動する 

     1) デスクトップ上の appium アイコンをダブルクリックして開き、「Android 設定」をクリックして設定します。

     

     2) 上記で取得した実デバイスの deviceName を入力し、platformName と platformVersion を選択します

     

      3) サービスのセッションを書き換え可能に構成します (必須ではない構成)

       

      設定後、右上隅の開始ボタンをクリックして開始します。

       

        起動に成功したら、次のステップはコードを記述することです。

4. 上記で取得したデバイスとインストールパッケージの情報をスクリプトに書き込みます

desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',    # 'unicodeKeyboard': 'True',#此两行是为了解决字符输入不正确的问题
    # 'resetKeyboard': 'True'   #运行完成后重置软键盘的状态

5. アプリのポジショニング要素を見つける

      Android SDK でアーティファクトを開始して、スクリプト用のアプリの配置要素を見つけます。次の図に示すように、Android SDK のツールには uiautomatorviewer.bat があります。

      

      uiauTomatorviewer.bat をクリックして開始します。左上隅に 4 つのボタンがあり、ローカル ファイルを開く、ページをダンプする、ダンプ圧縮形式のページを開く、および保存するために使用します。起動後、左上隅にある 3 番目のアイコンをクリックして、実機のインターフェースを表示します。

       

      最初の接続は遅くなりますが、辛抱強く待ちますが、接続が完了すると高速になります。ここでは、Baidu インターフェースを例に挙げます。

     

     実機接続後のインターフェース表示です。このようにして、id、class、text、およびその他の位置決め要素に基づいて位置決めを実行できます。

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.find_element_by_id("com.baidu.searchbox:id/baidu_searchbox").click()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").clear()
driver.find_element_by_id("com.baidu.searchbox:id/SearchTextInput").send_keys('appium测试')

driver.find_element_by_id("float_search_or_cancel").click()
driver.find_element_by_id("floating_action_button").click()

driver.quit()

3. 私自身のアプリを例として、完全なコードをすぐ下に示します。

#coding:utf-8

from appium import webdriver
import time,os

PATH = lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p))

#设备及安装包信息
desired_caps = {
    'platformName': 'Android',
    'deviceName':'8TB6V4ZPZ54LPJ5P',
    'platformVersion': '5.1',
    'app': PATH(r'D:\shell_customer-debug.apk'),
    'appPackage': 'com.jyibb.shell_customer',
    'appActivity': 'com.jyibb.module_launch_customer.SplashActivity',
    # 'unicodeKeyboard': 'True',
    # 'resetKeyboard': 'True'
}

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(5)#等待时间可根据自己的情况进行添加

driver.find_element_by_id("com.jyibb.shell_customer:id/layout_main_header_mine").click()
time.sleep(5)

driver.find_element_by_id("com.jyibb.shell_customer:id/login_phone_number_p").send_keys('15000000000')
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").click()
driver.find_element_by_id("com.jyibb.shell_customer:id/login_password_p").send_keys("111111q")

time.sleep(5)
driver.find_element_by_id("com.jyibb.shell_customer:id/bt_login_p").click()

      この時点で、スクリプトを実行して自動テストを実行します。

  Appium 自動テスト:

2023 年には、APP 自動化テスト プロジェクトの実戦を学ばなければなりません_哔哩哔哩_bilibili icon-default.png?t=N4HBhttps://www.bilibili.com/video/BV13g4y1G7QC/?spm_id_from=333.999.0.0

 

 

おすすめ

転載: blog.csdn.net/MXB1220/article/details/130773383
おすすめ