tap(タップ)
タップジェスチャーを実行します:
- 指定された要素に対して。要素が見つからない場合は自動的にスクロールします。
- または、
x
とy
座標を提供することで、モバイルデバイスの画面上でタップします。
内部的には次のものを使用します:
- 要素タップ:
- Webブラウザ環境(Chrome/Safariブラウザ、またはハイブリッドアプリ)では
click
コマンド - ネイティブア プリでは、Android用の
mobile: clickGesture
またはiOS用のmobile: tap
を使用し、自動スクロール用のscrollIntoView
コマンドを含みます
- Webブラウザ環境(Chrome/Safariブラウザ、またはハイブリッドアプリ)では
- 画面タップ:
- Webブラウザ環境(Chrome/Safariブラウザ、またはハイブリッドアプリ)では
action
コマンド - ネイティブアプリでは、Android用の
mobile: clickGesture
またはiOS用のmobile: tap
- Webブラウザ環境(Chrome/Safariブラウザ、またはハイブリッドアプリ)では
この違いにより、モバイルアプリではtap
コマンドはclick
コマンドよりも信頼性の高い代替手段となります。
ネイティブアプリの場合、このコマンドはclick
コマンドと異なり、scrollIntoView
コマンドを使用して要素に自動的にスワイプします。これはネイティブアプリのclick
コマンドではサポートされていません。ハイブリッドアプリまたはWeb環境では、自動スクロールはclick
とtap
の両方のコマンドでサポートされています。
情報
このコマンドは、以下の最新コンポーネントでのみ動作します:
- Appiumサーバー(バージョン2.0.0以上)
appium-uiautomator2-driver
(Android用)appium-xcuitest-driver
(iOS用)
互換性の問題を避けるため、ローカルまたはクラウドベースのAppium環境を定期的に更新してください。
画面タップについて
画面上の特定の座標をタップしたい場合で、スクリーンショットを使用して座標を決定する場合、iOSの座標はデバイスの画面サイズに基づいており、スクリーンショットのサイズではないことに注意してください。スクリーンショットのサイズはデバイスのピクセル比率のために大きくなっています。 iPhone 8までと現在のiPadの平均デバイスピクセル比率は2、iPhone XからのiPhoneの比率は3です。つまり、スクリーンショットのサイズはデバイスの画面サイズの2倍または3倍であり、スクリーンショット上で座標を見つけた場合は、デバイスピクセル比率で割って正確な画面座標を取得する必要があります。例えば:
const screenshotCoordinates = { x: 600, y: 900 };
const dpr = 3; // iPhone 16の例
const screenCoordinates = {
x: screenshotCoordinates.x / dpr,
y: screenshotCoordinates.y / dpr
};
await browser.tap(screenCoordinates);
パラメータ
名前 | 型 | 詳細 |
---|---|---|
options オプション | TapOptions | タップオプション(オプション) |
要素タップオプション | ||
options.x オプション | number | 数値(オプション、yが設定されている場合は必須) 画面タップの場合のみ、要素タップでは使用しない |
options.y オプション | number | 数値(オプション、xが設定されている場合は必須) 画面タップの場合のみ、要素タップでは使用しない |
画面タップオプション | ||
options.direction オプション | string | down 、up 、left 、right のいずれか、デフォルトはdown 。要素タップの場合のみ、画面タップでは使用しない モバイルネイティブアプリのみ |
options.maxScrolls オプション | number | 要素の検索を停止するまでの最大スクロール回数、デフォルトは10 。要素タップの場合のみ、画面タップでは使用しない モバイルネイティブアプリのみ |
options.scrollableElement オプション | Element | スクロールに使用される要素。要素が提供されない場合、iOSでは-ios predicate string:type == "XCUIElementTypeApplication" 、Androidでは//android.widget.ScrollView' というセレクタが使用されます。デフォルトのセレクタに複数の要素が一致する場合、デフォルトでは最初に一致する要素が選択されます。要素タップの場合のみ、画面タップでは使用しない モバイルネイティブアプリのみ |
例
element.tap.example.js
it('should be able to tap an on element', async () => {
const elem = $('~myElement')
// 要素がすでにビューポート内にない場合は自動的にスクロールします
await elem.tap()
})
element.tap.scroll.options.example.js
it('should be able to swipe right 3 times in a custom scroll areas to an element and tap on the element', async () => {
const elem = $('~myElement')
// カスタムスクロール可能な要素内で右に3回スワイプして要素を見つける
await elem.tap({
direction: 'right',
maxScrolls: 3,
scrollableElement: $('#scrollable')
})
})
screen.tap.example.js
it('should be able to tap on screen coordinates', async () => {
await browser.tap({ x: 200, y: 400 })
})