我可以很好地傳遞本機對象(字符串、列表、數字等),但是每當我嘗試傳遞 JSHandle 或 ElementHandle 時,我都會收到以下錯誤消息:“ TypeError: Converting circular structure to JSON Are you pass a nested JSHandle?在 JSON.stringify() "這是我的代碼: async getColumnsNames(id='dashboardGrid') { await this.loadObjects(); const grid = this.table const detectedColumns = await this.page.evaluate(({grid}) => { //const grid = document.getElementById(id) const header = grid.getElementsByClassName('ag-header-viewport')[0] const labelRow = header.getElementsByClassName('ag-header-row')[0] const cells = labelRow.getElementsByClassName('ag-header-cell-text') var children = [] for(x = 0; x < cells.length; x++) { cells[x].innerText.length > 0 ? children.push(cells[x].innerText) : null } return children }, {grid}); console.log(detectedColumns)}所以如果我通過'id'來獲取'grid'元素內部,沒問題(它是一個CSS選擇器),但如果我嘗試直接傳遞一個句柄(grid),我會得到那個錯誤消息。所說的句柄正是這樣的:this.table = await this.page.$(this.tableID);這完全適用于檢測相應的 DOM 元素(this.tableID 是'[id="dashboardGrid"]'),所以我知道句柄不是問題。
puppeteer 評估不接受 JSHandles 或 ElementHandles 作為變量的函數
斯蒂芬大帝
2022-01-13 17:25:17