メインコンテンツにスキップ

アクション

action コマンドは、Webブラウザに仮想化されたデバイス入力アクションを提供するための低レベルインターフェースです。

scrollIntoViewdoubleClick などの高レベルコマンドに加えて、Actions APIは指定された入力デバイスが実行できることを細かく制御できます。WebdriverIOは3種類の入力ソースのインターフェースを提供しています:

  • キーボードデバイス用のキー入力
  • マウス、ペンまたはタッチデバイス用のポインター入力
  • スクロールホイールデバイス用のホイール入力

アクションコマンドのチェーンはすべて、perform を呼び出して一連のアクションをトリガーする必要があります。これにより、アクションが解放され、イベントが発生します。trueを渡すことでこれをスキップできます(例:browser.actions(...).perform(true))。

情報

このコマンドと特定のアクションのサポートは環境によって異なる場合があります。開発の進行状況はwpt.fyiで確認できます。 モバイルの場合は、iOSおよびAndroid向けのAppium固有のジェスチャーコマンドを使用することをお勧めします。

キー入力ソース

キー入力ソースは、キーボード型デバイスに関連付けられた入力ソースです。keyタイプパラメータを使用してトリガーできます。例:

browser.action('key')

これにより、以下のアクションをサポートするKeyActionオブジェクトが返されます:

  • down(value: string): キーダウンアクションを生成します
  • up(value: string): キーアップアクションを生成します
  • pause(ms: number): 特定のティックの間、入力ソースが何もしないことを示します

特殊文字

ControlPage UpまたはShiftなどの特殊文字を使用したい場合は、webdriverioパッケージからKeyオブジェクトをインポートしてください:

import { Key } from 'webdriverio'

このオブジェクトを使用すると、目的の特殊文字のUnicode表現にアクセスできます。

ポインター入力ソース

ポインター入力ソースは、ポインタータイプの入力デバイスに関連付けられた入力ソースです。タイプはactionコマンドを呼び出すときに指定できます。例:

browser.action('pointer', {
parameters: { pointerType: 'mouse' } // "mouse"がデフォルト値、"pen"または"touch"も可能
})

これにより、以下のアクションをサポートするPointerActionオブジェクトが返されます:

  • down (button: 'left' | 'middle' | 'right'): 単一のキーを押すアクションを作成します
  • down (params: PointerActionParams): 詳細なパラメータを持つ単一のキーを押すアクションを作成します
  • move (x: number, y: number): ビューポートからxおよびyピクセル分ポインターを移動するアクションを作成します
  • move (params: PointerActionMoveParams): 指定されたoriginからxおよびyピクセル分ポインターを移動するアクションを作成します。originはポインターの現在位置(例:「pointer」)、ビューポート(例:「viewport」)、または特定の要素の中心として定義できます。
  • up (button: 'left' | 'middle' | 'right'): 単一のキーを離すアクションを作成します
  • up (params: PointerActionUpParams): 詳細なパラメータを持つ単一のキーを離すアクションを作成します
  • cancel(): このポインターの現在の入力をキャンセルするアクション。
  • pause(ms: number): 特定のティックの間、入力ソースが何もしないことを示します

PointerActionParamsPointerActionMoveParamsPointerActionUpParamsパラメータタイプの詳細情報は、プロジェクトの型定義で確認できます。

ホイール入力ソース

ホイール入力ソースは、ホイールタイプの入力デバイスに関連付けられた入力ソースです。

browser.action('wheel')

これにより、以下のアクションをサポートするWheelActionオブジェクトが返されます:

  • scroll (params: ScrollParams): 指定された座標または原点にページをスクロールします
  • pause(ms: number): 特定のティックの間、入力ソースが何もしないことを示します

ScrollParamsパラメータタイプの詳細情報は、プロジェクトの型定義で確認できます。

使用法
browser.action()
pointer-action.js
it('drag and drop using pointer action command', async () => {
const origin = await $('#source')
const targetOrigin = await $('#target')

return browser.action('pointer')
.move({ duration: 0, origin, x: 0, y: 0 })
.down({ button: 0 }) // left button
.pause(10)
.move({ duration: 0, origin: targetOrigin })
.up({ button: 0 })
.perform()
});
key-action.js
import { Key } from 'webdriverio'

it('should emit key events using key action commands', async () => {
const elem = await $('input')
await elem.click() // make element active

await browser.action('key')
.down('f')
.down('o')
.down('o')
.up('f')
.up('o')
.up('o')
.perform()

console.log(await elem.getValue()) // returns "foo"

// copy value out of input element
await browser.action('key')
.down(Key.Ctrl).down('c')
.pause(10)
.up(Key.Ctrl).up('c')
.perform()
})
wheel-action.js
it('should scroll using wheel action commands', async () => {
console.log(await browser.execute(() => window.scrollY)) // returns 0
await browser.action('wheel').scroll({
deltaX: 0,
deltaY: 500,
duration: 200
}).perform()
console.log(await browser.execute(() => window.scrollY)) // returns 500
})

Welcome! How can I help?

WebdriverIO AI Copilot