亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

puppeteer 評估不接受 JSHandles 或 ElementHandles 作為變量的函數

puppeteer 評估不接受 JSHandles 或 ElementHandles 作為變量的函數

斯蒂芬大帝 2022-01-13 17:25:17
我可以很好地傳遞本機對象(字符串、列表、數字等),但是每當我嘗試傳遞 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"]'),所以我知道句柄不是問題。
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

問題是,當您像這樣構建第一個參數時{grid},生成的對象不是 的實例JSHandle,因此評估不會正確處理它。


這應該工作


const detectedColumns = await this.page.evaluate(grid => {

//Some code

}, grid);


查看完整回答
反對 回復 2022-01-13
  • 1 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號