カスタムステップは、コードを実装することで汎用的ではない要件に対応するために、機能テストで使用されます。カスタムステップは、機能テストステップとして通常のテストケーススクリプトに挿入でき、通常はビジネスまたはテストケースシナリオに関連する共通ロジックを実装するために使用されます。
前提条件
Appium エンジンに関する基本的な知識が必要です。詳細については、「Appium ドキュメント」をご参照ください。
Python プログラミングの基本的なスキルが必要です。詳細については、「Python ドキュメント」をご参照ください。
指定したアプリの [テストケース] ページが表示されます。詳細については、「テストケースページに移動する」をご参照ください。
手順
モバイルテストコンソール にログオンします。
左側のナビゲーションウィンドウで、[テスト管理] > [テストケース] を選択します。[スクリプト] タブが表示されます。
[ケースライブラリ] ドロップダウンリストから、テストケースライブラリとテストケースライブラリバージョンを選択します。
[カスタムステップ] タブで、[カスタムステップの作成] をクリックします。[カスタムステップの作成] パネルが表示されます。
[カスタムステップの作成] パネルで、パラメーターを設定します。
次の表にパラメーターを示します。
パラメーター
説明
ステップ名
カスタムステップの名前。
説明
カスタムステップの情報。説明は、後続のクエリとレビューを容易にします。
入力パラメーター
カスタムステップの入力パラメーター。
操作手順
パラメーター名とパラメーターの説明を入力します。
[パラメーターの追加] をクリックし、
self.step["
パラメーター名
"]
を使用して、name
やage
などのパラメーターを以下のリストに追加します。上記の手順を繰り返して、複数の入力パラメーターを追加します。
コード
カスタムステップのコード。
[操作手順] [編集/詳細表示] をクリックします。[コードの編集] パネルが表示されます。
[OK] をクリックします。
コーディング仕様
カスタムステップのコードは、Appium エンジンと Python 3 以後に基づいて記述する必要があります。
カスタムステップは、Android アプリプロジェクトまたは iOS アプリプロジェクト間でグローバルに共有されます。したがって、カスタムステップの関数名は一意である必要があります。
カスタムステップのコードは、Python の構文と規則に準拠している必要があります。例:
class className(): def setAppium(self, driver=None, step=None): self.driver = driver self.step = step def run(self): #code
次の表に必要な関数を示します。
関数
説明
className
カスタムステップを一意に識別するために使用されるクラス名。
setAppium
初期化インターフェイス。この操作を実行する前に、スクリプトは setAppium を使用して現在の操作に必要なパラメーターを渡します。
driver
: Appium と通信し、Appium 関連の操作を実行するために使用される Appium ドライバー。step
: 現在のステップ。{key(string):value(string)}
形式の辞書オブジェクトとして表されます。
説明標準ライブラリに加えて、モバイルテストでは、Appium クライアントの実行環境で次のサードパーティライブラリを提供しています。Appium-Python-Client、selenium、matplotlib、cv2、numpy、pycurl、subprocess32、MySQL-python、cx-Oracle、ibm_db。
サンプルコード
例 1:driver メソッドを呼び出して単純なスワイプ操作を実行する。
class test():
#interface to set appium params
def setAppium(self, driver=None, step=None):
self.driver = driver
self.step = step
def run(self):
#add main code here
# 左スワイプ操作を実行します。
# 画面の高さを取得します。
x = driver.get_window_size()['width']
print float(6.0/7)*x
# 画面の幅を取得します。
y = driver.get_window_size()['height']
# 画面の右側の真ん中から左にスワイプします。スワイプ操作の後、[ホットスポット] タブが表示されます。
driver.swipe(0.89*x, 0.5*y, 0.12*x, y/2, 500)
例 2:param1
と param2
の値の差を計算し、戻り値を 戻り値をresult
パラメーターに保存する。
import desired_capabilities
class minus():
def setAppium(self, driver=None, step=None):
self.driver = driver
self.step = step
def run(self):
result = step.get("param1") - step.get("param2")
step.put("result", result)
例 3:WebView デバッグモードを有効にする。
from AppiumLib import AppiumLib
from time import sleep
class OpenWebviewDebug():
def setAppium(self, driver=None, step=None):
if driver is not None:
self.driver = driver
self.appiumLib = AppiumLib(self.driver)
if step is not None:
self.step = step
def run(self):
platform = self.step.get("platform")
self.appiumLib.openWebviewDebug(platform)
# [永続的] をタップします。
self.appiumLib.touch(xpath="//android.widget.CheckBox[@text='Permanent' or @content-desc='Permanent']")
# [OK] をタップします。
self.appiumLib.touch(xpath="//android.widget.TextView[@text='OK' or @content-desc='OK']")
sleep(2)
プラットフォーム入力パラメーターを設定すると、プラットフォームパラメーターは現在の操作のステップ辞書のキーとして渡されます。テストの説明で ${platform}
構文を使用してプラットフォームパラメーターを参照できます。これは、オンラインで記録され、テスト目的で提供される実行可能なパラメーターとして解析されます。
例 4:コントロールを連続してタップする。
import AppiumLib
class clicksByxpath():
#interface to set appium params
def setAppium(self, driver=None, step=None):
self.driver = driver
self.step = step
self.xpath = step.get("xpath")
self.times = step.get("times")
def run(self):
#add main code here
el = self.driver.find_element_by_xpath(self.xpath)
for i in range(int(self.times)):
el.click()
print '%d clicks' %(i +1)
print self.times
プラットフォーム表示:オンライン記録機能を使用して、コントロールの XPath パスを自動的に生成できます。具体的には、コントロールの右側にある [ステップの生成] をタップして、コントロールの XPath パスを含むステップを作成できます。次に、テスト
スクリプトにパスをコピーして貼り付け、テスト実行中にパスを使用できます。