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

executeAsync

警告

executeAsyncコマンドは非推奨であり、将来のバージョンで削除される予定です。 代わりにexecuteコマンドを使用してください。executeコマンドはasync/awaitを通じて より良いエラー処理のサポートを提供します。

JavaScriptのスニペットをページに注入し、現在選択されているフレームのコンテキストで実行します。 対象要素をスコープとして使用するため、WebdriverIOはスクリプトを実行する前に 自動的に要素が存在するまで待機します。 実行されるスクリプトは非同期であると想定され、提供されるコールバック(常に関数の最後の引数として提供される)を 呼び出すことによって完了を通知する必要があります。このコールバックに渡された値が クライアントに返されます。

非同期スクリプトコマンドはページロードをまたぐことはできません。スクリプト結果を待っている間に アンロードイベントが発生した場合は、エラーがクライアントに返されます。

script引数は関数本体の形式で実行するスクリプトを定義します。この関数は 提供されたargs配列で呼び出され、値は指定された順序でargumentsオブジェクト を介してアクセスできます。最後の引数は常にコールバック関数であり、スクリプトが 完了したことを通知するために呼び出す必要があります。

引数はJSON基本型、配列、またはJSONオブジェクトのいずれかです。WebElement参照を定義するJSONオブジェクトは 対応するDOM要素に変換されます。同様に、スクリプト結果内のWebElementはWebElement JSONオブジェクトとして クライアントに返されます。

注意

代わりにexecuteを使用してください

使用法
$(selector).executeAsync(script, arguments)
パラメータ
名前タイプ詳細
scriptString, Function実行するスクリプト。
arguments
オプション
*スクリプトの引数
executeAsync.js
it('should wait for the element to exist, then executes async javascript on the page with the element as first argument', async () => {
await browser.setTimeout({ script: 5000 })
const text = await $('div').execute((elem, a, b, c, d) => {
// browser context - you may not access client or console
setTimeout(() => {
done(elem.textContent + a + b + c + d)
}, 3000);
}, 1, 2, 3, 4);
// node.js context - client and console are available
// node.js context - client and console are available
console.log(text); // outputs "Hello World1234"
});
戻り値
  • <*> return: スクリプトの結果。

Welcome! How can I help?

WebdriverIO AI Copilot