跳至主要內容

executeAsync

警告

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

將一段 JavaScript 片段注入頁面中,以便在目前所選框架的環境中執行。執行的腳本會被假定為非同步,且必須透過呼叫提供的回呼來表示完成,該回呼會一直作為函數的最後一個參數提供。回呼的值將會返回給客戶端。

非同步腳本命令可能不會跨頁面載入。如果在等待腳本結果時觸發 unload 事件,則應向客戶端返回錯誤。

腳本參數定義要執行的腳本,其形式為函數主體。該函數將以提供的 args 陣列調用,且這些值可透過 arguments 物件依指定的順序存取。最後一個參數會一直是一個回呼函數,必須調用該函數以表示腳本已完成。

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

注意

true

用法
browser.executeAsync(script, arguments)
參數
名稱類型詳細資訊
scriptStringFunction要執行的腳本。
arguments
選填
param腳本參數
範例
executeAsync.js
it('should execute async JavaScript on the page', async () => {
await browser.setTimeout({ script: 5000 })
const result = await browser.executeAsync(function(a, b, c, d, done) {
// browser context - you may not access client or console
setTimeout(() => {
done(a + b + c + d)
}, 3000);
}, 1, 2, 3, 4)
// node.js context - client and console are available
console.log(result) // outputs: 10
});

歡迎!我能幫你什麼嗎?

WebdriverIO AI Copilot