Amazon Developer

as

Settings
Sign out
Notifications
Alexa
Amazonアプリストア
Ring
AWS
ドキュメント
Support
Contact Us
My Cases
開発
設計と開発
公開
リファレンス
サポート

Appiumコマンド

Appiumコマンド

Appium Vegaドライバーは、以下のWorld Wide Web Consortium (W3C) WebDriverコマンドをサポートしています。

find_element

find_elementコマンドは、指定されたセレクター戦略に一致する最初のUI要素を特定します。

クリップボードにコピーしました。

element = driver.find_element('UiSelector', '{"args": {"text": "要素のテキスト"}}')

Appium Vegaドライバーでは、By.xpath()ロケーター戦略を使用してXPathを利用できます。

クリップボードにコピーしました。

appium_driver.find_element(by="xpath", value="//*[contains(@clickable, \”true\”)]”)

引数

名前 タイプ 必須 説明
selector string はい 要素を見つけるために使用するロケーター戦略。 UiSelector
args string はい 検索するロケーターの値。  

一般的なXPath式のコンポーネント

XPath式は次の部分から構成されます。

  • - 子孫、祖先、以降に続くノードなどの検索の方向を指定します。
  • ノードテスト - 要素、属性、text()など、選択するノードタイプを指定します。
  • 述部 - 属性値、位置、カスタム関数などのさまざまな条件に基づいて、選択されたノードをフィルタリングします。

それぞれの構成部分を含むXPath式の例を次に示します。

//Text[@text='Click me', @test-id='1234']

find_elements

find_elementsコマンドは、複数のUI要素を特定します。さまざまなロケーター戦略をサポートし、要素の配列を返します(配列は空になる場合もあります)。このコマンドは以下の目的で使用します。

  • リスト全体に対する反復処理
  • 複数のコントロールの検証

最適なパフォーマンスと信頼性を実現するため、特定のロケーター戦略と適切なタイムアウトを使用してください。複雑なUIシナリオには、階層型XPathなどの高度な手法を使用します。

element = driver.find_elements('UiSelector', '{
     "args": {
         "text": "要素のテキスト"
     }
   }'
 )

引数

名前 タイプ 必須 説明
locator string はい 要素を見つけるために使用するロケーター戦略。 UiSelector
args string はい 検索するロケーターの値。  

find_elementとfind_elementsの比較

特徴 find_element find_elements
戻り値 単一のWebElementオブジェクト WebElementオブジェクトの配列(空の場合あり)
要素が見つからない場合 NoSuchElementExceptionが発生 空の配列を返す
ユースケース 単一の固有の要素 複数の要素
パフォーマンス 高速(最初の一致で停止) 低速(すべての一致を検索)
柔軟性 単一要素操作 複数要素操作
エラー処理 例外処理が必要 欠落している要素を処理
反復処理 反復処理はサポートされない 反復処理をサポート
検証 要素の存在を確認 要素の数と状態を確認

親要素のコンテキスト内で子要素を見つけるには、子要素を含む囲み要素を探します。


window = driver.find_element("xpath", '//window[@id="{window_id}"]')

button_child_xpath = window.find_element("xpath", '//child[@test_id="button-insert"]')

button_child_uiselector = window.find_element("UiSelector", '{"args": {"test_id": "button-insert"}}')

click

clickコマンドは、特定の要素の中心点をクリックする操作をシミュレートします。さまざまなロケーター戦略が用意されていますが、要素をIDによってクリックすることで、確実で保守しやすいアプローチになります。

button = appium_driver.find_element("UiSelector", '{"args":{ "text": "ボタン1" }}')
button.click()

引数

clickコマンドは先に特定済みの要素に対して動作するため、引数は必要ありません。

send_keys

send_keysコマンドは、文字列引数を受け取り、要素へのテキスト入力をシミュレートします。

# テストアプリを起動した後
editableEle = appium_driver.find_element("UiSelector", '{"args":{ "role": "edit" }}')
editableEle.send_keys("the quick brown fox")

引数

名前 タイプ 必須 説明
text string はい 要素に入力するテキスト。 "Hello World"

ベストプラクティス:

  • ターゲット要素にフォーカスがあり、入力を受け取る準備ができていることを確認する。
  • キーを送信する前に要素のフォーカスを確認する。キーを送信する前に、click ()などのコマンドを使用して要素を選択する。
  • 一部のデバイスやアプリでは高速または同時の入力によって問題が発生する可能性があるため、キー送信の間に短い遅延を追加する。

get_attribute

get_attributeコマンドは、UI要素から指定した属性の値を取得します。

button = appium_driver.find_element("UiSelector", '{"args":{ "text": "ボタン" }}')
buttonText = button.get_attribute("UiObject:text")
assert buttonText == '["ボタン"]' 

引数

名前 タイプ 必須 説明
属性 string はい 取得する属性の名前。 text

属性の一覧

属性 想定されるレスポンス形式
UiObject:text "テキスト"
UiObject:scroll-offset "x"、"y"
UiObject:scroll-directions "up"、"down"、"left"、"right"
UiObject:current-page "1"
UiObject:page-count "1"
UiObject:focused "true"
UiObject:enabled "true"
UiObject:long-clickable "true"
UiObject:draggable "true"
UiObject:pinchable "true" UiObject:editable "true"
UiObject:checkable "true"
UiObject:checked "true"
UiObject:focusable "true"
UiObject:pageable "true"
UiObject:scrollable "true"
UiObject:clickable "true"
UiObject:test-id "test-id"
UiObject:page-direction "up"、"down"、"left"、"right"
UiObject:description "description"

get_element_text

get_element_textコマンドは、UI要素に表示されているテキストコンテンツを取得します。非表示のテキストを除き、ユーザーに表示されているテキストを返します。

element = appium_driver.find_element("UiSelector", '{"args":{ "text": "ボタン" }}')
text = element.text
print(f"要素のテキスト:{text}")

引数

get_element_textコマンドは先に特定済みの要素に対して動作するため、引数は必要ありません。

ベストプラクティス:

  • テキストの取得を試みる前に、要素が存在することを確認してください。
  • 空のテキストが返される可能性を適切に処理してください。
  • アサーションではテキストの書式や特殊文字を考慮してください。
  • 必要に応じて適切な待機戦略と共に使用してください。

press_keycode

press_keycodeコマンドは、デバイスで特定のハードウェアキーを押す操作をシミュレートします。アプリの状態やテストフローに影響する可能性があるため、注意して使用してください。数字のキーコードのみを受け入れます(16進コードには対応していません)。

driver.press_keycode({KEYCODE})

引数

名前 タイプ 必須 説明
keycode integer はい 押下するハードウェアキーのキーコード。 10

tap

tapコマンドは、画面上の特定の座標セットをタップする操作をシミュレートします。このコマンドはタッチ操作を正確に制御できますが、注意が必要です。

buttonCoordinates = (200, 350)
appium_driver.tap([buttonCoordinates])

引数

名前 タイプ 必須 説明
x integer はい タップ位置のX座標。 10
y integer はい タップ位置のY座標。 10

ベストプラクティス:

tapではきめ細かい制御が可能ですが、テストの安定性と保守性を保つためには、要素ベースの対話操作を優先することをお勧めします。要素ベースの方法が実用的でない場合にのみ使用してください。

is_enabled

is_enabledコマンドは、UI要素の現在の状態を確認します。有効(対話可能)の場合はtrue、無効(対話不可能)の場合はfalseを返します。

element = appium_driver.find_element("UiSelector", '{"args":{ "text": "ボタン1" }}')
element.is_enabled()

有効な状態の要素は、ユーザーによる対話操作が可能です。ただし、有効になっても対話操作性が保証されるわけではありません。要素は有効な状態として機能していても、可視状態でない場合や、操作を妨げるその他の要因が存在する場合があります。対話操作可能かどうかを検証するには、is_enabledとほかのコマンド(is_displayedなど)を組み合わせて使用してください。

引数

is_enabledコマンドは先に特定済みの要素に対して動作するため、引数を受け取りません。

ベストプラクティス:

  • is_enabledは、要素に対するさまざまな状態チェックの一部として使用してください。
  • 要素の対話操作性の判断をis_enabledに頼らないでください。
  • 要素の状態を確認する前に待機戦略を実装してください。

is_displayed

is_displayedコマンドは、UI要素が画面に表示されているかどうかを確認します。表示されている場合はtrueを返し、非表示の場合はfalseを返します。

element = driver.find_element('UiSelector', '{"args": {"test_id": "my_button"}}')
element.is_displayed()

要素は、画面の境界内に表示されているときに表示状態になります。

引数

is_displayedコマンドは先に特定済みの要素に対して動作するため、引数を受け取りません。

ベストプラクティス:

  • is_displayedは、要素に対するさまざまな状態チェックの一部として使用してください。

implicitly_wait

implicitly_waitコマンドは、使用できない要素を検索するときにドライバーが待機する時間を設定します。このコマンドはテストの安定性を高めますが、注意して使用してください。複雑なシナリオでは、implicitly_waitexplicit waitsを組み合わせて、信頼性と実行速度のバランスを取ってください。

driver.implicitly_wait(5)

詳細な実装については、Set Implicit Wait Timeout(英語のみ)を参照してください。

引数

名前 タイプ 必須 説明
integer はい 待機する時間(ミリ秒)。 10

ベストプラクティス:

  • implicitly_waitはテストの開始時に設定します。
  • 必要に応じて、適切なデフォルト(たとえば、0ms)にリセットします。

get_window_rect

get_window_rectコマンドは、画面全体のサイズを基準として、現在のアプリウィンドウのサイズと位置を取得します。

例:

Python

res = driver.get_window_rect()

Java

Dimension windowSize = driver.manage().window().getSize(); # ウィンドウサイズ(width、height)を返す
Point windowOrigin = driver.manage().window().getPosition(); # ウィンドウの原点座標(x、y)を返す

値の説明は以下のとおりです。

  • x - ウィンドウの左の座標
  • y - ウィンドウの上の座標
  • width - ウィンドウの幅
  • height - ウィンドウの高さ

引数

引数は必要ありません。

ベストプラクティス:

さまざまな画面サイズとレイアウトを処理する堅牢なテストスクリプトを作成するには、get_window_rectをほかのコマンドと組み合わせて使用します。

get_page_source

get_page_sourceコマンドは、アプリの現在のページソースを取得します。ページソースは、基盤となるUI構造を表します。

Python

page_source = driver.page_source
print(page_source)

Java

String pageSource = driver.getPageSource();
System.out.println(pageSource);

引数

get_page_sourceコマンドには引数は必要ありません。

get_screenshot

get_screenshotコマンドは、現在のアプリの状態をbase64エンコードされた文字列としてキャプチャします。このコマンドを使用するときは、ユーザーのプライバシーに配慮してください。デジタル著作権管理(DRM)コンテンツをキャプチャしないでください。

Python

screenshot_base64 = driver.get_screenshot_as_base64() # スクリーンショットをbase64エンコード文字列として取得

Java

File screenshotFile     = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); // スクリーンショットを取得してファイルに保存
byte[] screenshotRaw    = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES); // スクリーンショットの未加工バイトを取得
String screenshotBase64 = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BASE64); // スクリーンショットをbase64エンコード文字列として取得

すべてのメソッドと例の一覧については、Appiumのドキュメント(英語のみ)を参照してください。

引数

このコマンドには引数は必要ありません。

install_app

install_appコマンドは、デバイスにアプリをインストールする際に使用します。VPKGファイルパスは、ホスト(Appiumサーバー)のファイルシステム上で使用できる必要があります。テストの開始時にこのコマンドを使用して、環境セットアップを自動化します。

例:

Python:

driver.install_app('/path/to/app.vpkg')

Java:

driver.executeScript("mobile: installApp", Map.of("appPath", "/path/to/app.vpkg"));

引数

名前 タイプ 必須 説明
app_path string はい Appiumサーバー上のアプリのパス。 /path/to/application.vpkg

activate_app

activate_appコマンドは、指定されたアプリをデバイス上で起動するかフォアグラウンドに移動します。このコマンドは、アプリの切り替えのシナリオをテストしたり、ほかのテストアクションを実行する前に特定のアプリがアクティブであることを確認したりするために役立ちます。

例:(注:画面の出力に関する日本語表記は説明のために提供しています。実際には英語で表示されます。)

Python:

driver.activate_app('com.example.myapp.main')

Java:

boolean isInstalled = (boolean) driver.executeScript("mobile: activateApp",
    Map.of("appId", "com.example.myapp.main"));

引数

名前 タイプ 必須 説明
app_id string はい アクティベートするアプリのパッケージ名またはバンドル識別子。 com.example.myapp.main

ベストプラクティス

アプリを起動するための正しいappIdを取得するには、vpm list applicationsを実行します。

terminate_app

terminate_appコマンドは、現在実行中のアプリを停止します。このコマンドは、強制終了時のアプリの動作をテストする場合や、テストケース間でクリーンな状態を保証する場合に使用します。

例:(注:画面の出力に関する日本語表記は説明のために提供しています。実際には英語で表示されます。)

driver.terminate_app('com.example.myapp')

引数

名前 タイプ 必須 説明
app_id string はい 停止するアプリのパッケージ識別子。 com.example.myapp

remove_app

remove_appコマンドは、デバイスからアプリをアンインストールする際に使用します。

例:

driver.remove_app('com.example.myapp')

引数

名前 タイプ 必須 説明
app_id string はい アンインストールするアプリのパッケージ識別子。 com.example.myapp

execute_script

execute_scriptコマンドは、シェルコマンドを実行するか、jsonrpc APIを呼び出します。

デバイス上でシェルコマンドを実行するには

appium_driver.execute_script("shell", "echo hello world") #

Appiumパブリックインターフェイスで公開されていないjsonrpc APIを呼び出すには:

appium_driver.execute_script("jsonrpc: getScreenContext", "")

push_file

push_fileコマンドを使用すると、ファイルをデバイスに直接転送できます。ファイルのコンテンツをbase64でエンコードされた文字列として提供する必要があります。これは、テストデータ、構成ファイル、そのほかテストの実行中に必要なファイルをアップロードするユースケースに役立ちます。

Python:

with open('test_image.png', 'rb') as image_file:
    image_data = base64.b64encode(image_file.read()).decode('utf-8')
    driver.push_file('/data/local/tmp/test_image.png', image_data)

Java:

File fileToUpload = new File("/path/to/your/file.txt");
String base64Content;
try {
    // ファイルの内容をBase64に変換します
    byte[] fileContent = FileUtils.readFileToByteArray(fileToUpload);
    base64Content = Base64.getEncoder().encodeToString(fileContent);
 
    //pushFileコマンドを実行します
    driver.executeScript("mobile: pushFile", Map.of(
            "remotePath", "/tmp/uploaded_file.txt",
            "payload", base64Content
    ));
 
    System.out.println("ファイルは正常にアップロードされました");
} catch (IOException e) {
    System.err.println("ファイルのアップロード中にエラーが発生しました:" + e.getMessage());
    e.printStackTrace();
}

引数

名前 タイプ 必須 説明
remote_path string はい ファイルを保存するデバイス上のパス。 /data/local/tmp/test_file.txt
data string はい Base64でエンコードされたファイルの内容。  

pull_file

push_fileコマンドを使用すると、デバイスからファイルを直接転送できます。このコマンドは、ファイルのコンテンツをbase64でエンコードされた文字列として返します。これは、テスト結果、構成ファイル、そのほかテストの実行中や実行後に必要なファイルをダウンロードするユースケースに役立ちます。

Python:

base64_string = driver.pull_file("/tmp/testFile.txt")

Java:

try {
    // ディレクトリからファイルをプルします
    Object fileBase64 = driver.executeScript("mobile: pullFile", Map.of("remotePath", "/tmp/testFile.txt"));
    System.out.println("ファイルは正常にダウンロードされました");
} catch (IOException e) {
    System.err.println("ファイルのダウンロード中にエラーが発生しました:" + e.getMessage());
    e.printStackTrace();
}

引数

名前 タイプ 必須 説明
remote_path string はい ファイルをプルするデバイス上のパス。 /data/local/tmp/test_file.txt

D-Padナビゲーション

execute_script関数では、jsonrpc: injectInputKeyEventメソッドを通じてLinuxの入力イベントコードが送信されます。この機能により、アプリはユーザー入力イベントをプログラムでシミュレートして自動化とテストができます。

この関数は指定されたコマンドとキーイベントをスクリプト内で実行し、方向パッド入力用に設計されたアプリでのD-Padナビゲーションを可能にします。

次の表は、入力イベントコードの一覧です。Python:

キーコード
KEY_LEFT 105
KEY_RIGHT 106
KEY_UP 103
KEY_DOWN 108
KEY_PENTER(選択) 96
KEY_BACK 158
KEY_HOMEPAGE 170

定義されているキーコードの包括的な一覧については、入力イベントコード(英語のみ)を参照してください。入力イベントコードのリファレンスは、アクセスしやすく使いやすいキーボードエクスペリエンスを作成するために役立ちます。特定のキーコードのサポートは、デバイスタイプと入力構成によって異なります。非標準のキーボードレイアウトや動作について、キーボード入力処理をテストしてください。

injectInputKeyEventを実行するには、次のコマンドを使用します。

クリップボードにコピーしました。

driver.execute_script("jsonrpc: injectInputKeyEvent",[{"inputKeyEvent": "{イベント}" , "holdDuration": 1000}])

たとえば、下に移動するには次のコマンドを使用します。

クリップボードにコピーしました。

driver.execute_script("jsonrpc: injectInputKeyEvent",[{"inputKeyEvent": "108" , "holdDuration": 1000}])

Last updated: 2025年10月31日