executeAsync
executeAsync
コマンドは非推奨であり、将来のバージョンで削除されます。代わりに、async
/await
を介してエラー処理をより適切にサポートするexecute
コマンドを使用してください。
指定された要素をスコープとして使用し、現在選択されているフレームのコンテキスト内で実行するために、JavaScript のスニペットをページに挿入します。要素スコープ上にあるため、WebdriverIO はスクリプトを実行する前に要素が存在するのを自動的に待機します。実行されたスクリプトは非同期であると想定され、関数への最後の引数として常に提供される、提供されたコールバックを呼び出すことで完了したことを通知する必要があります。このコールバックへの値は、クライアントに返されます。
非同期スクリプト コマンドは、ページ読み込みにまたがることはできません。スクリプトの結果を待機中にアンロード イベントが発生した場合、エラーがクライアントに返される必要があります。
script 引数は、関数本体の形式で実行するスクリプトを定義します。関数は、指定された args 配列で呼び出され、値は、指定された順序で arguments オブジェクトを介してアクセスできます。最後の引数は常に、スクリプトが完了したことを通知するために呼び出す必要があるコールバック関数になります。
引数は、JSON プリミティブ、配列、または JSON オブジェクトのいずれでもかまいません。WebElement 参照を定義する JSON オブジェクトは、対応する DOM 要素に変換されます。同様に、スクリプト結果内の WebElements は、WebElement JSON オブジェクトとしてクライアントに返されます。
true
使用法
$(selector).executeAsync(script, arguments)
パラメーター
名前 | 型 | 詳細 |
---|---|---|
script | String , Function | 実行するスクリプト。 |
arguments オプション | param | スクリプト引数 |
例
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"
});