跳至主要內容

executeAsync

警告

executeAsync 指令已過時,將在未來版本中移除。請改用 execute 指令,因為它透過 async/await 提供更好的錯誤處理支援。

將一段 JavaScript 片段注入頁面中,以便在使用給定元素作為範圍的目前選取框架的內容中執行,因為它位於元素範圍上,這表示 WebdriverIO 將在執行指令碼之前自動等待該元素存在。執行的指令碼會被假設為非同步,且必須透過調用提供的回呼來發出完成訊號,該回呼始終作為函式的最後一個參數提供。此回呼的值將會傳回給用戶端。

非同步指令碼指令不得跨越頁面載入。如果在等待指令碼結果時觸發卸載事件,則應向用戶端傳回錯誤。

script 引數定義要執行的指令碼,其形式為函式主體。函式將會使用提供的 args 陣列進行調用,且這些值可以透過依指定順序的 arguments 物件來存取。最後一個引數始終會是一個回呼函式,必須調用它來發出指令碼已完成的訊號。

引數可以是任何 JSON 基本類型、陣列或 JSON 物件。定義 WebElement 參照的 JSON 物件將會轉換為對應的 DOM 元素。同樣地,指令碼結果中的任何 WebElement 都會以 WebElement JSON 物件的形式傳回給用戶端。

注意

true

用法
$(selector).executeAsync(script, arguments)
參數
名稱類型詳細資訊
scriptStringFunction要執行的指令碼。
arguments
選用
param指令碼引數
範例
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"
});

歡迎!我可以幫您什麼嗎?

WebdriverIO AI Copilot