我可以很好地传递本机对象(字符串、列表、数字等),但是每当我尝试传递 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"]'),所以我知道句柄不是问题。
桃花长相依
相关分类