- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以很好地传递 native 对象(字符串、列表、数字等),但每当我尝试传递 JSHandle 或 ElementHandle 时,我都会收到此错误消息:“TypeError:将循环结构转换为 JSON Are您在 JSON.stringify () 处传递嵌套的 JSHandle?"
这是我的代码:
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 选择器),但如果我尝试直接传递句柄(网格),则会收到该错误消息。
所说的句柄正是这样的:
this.table = await this.page.$(this.tableID);
这在其他地方完全可以用于检测相应的 DOM 元素(this.tableID 是'[id="dashboardGrid"]'),所以我知道句柄不是问题。
最佳答案
问题是,当您构建像这样的第一个参数 {grid}
时,生成的对象不是 JSHandle
的实例,因此评估不会处理正确的是。
这应该有效
const detectedColumns = await this.page.evaluate(grid => {
//Some code
}, grid);
关于javascript - puppeteer 评估不接受 JSHandles 或 ElementHandles 作为变量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59078005/
我正在尝试抓取一个单页网站。有多种选择组合会导致不同的搜索重定向。我在 page.evaluate 中写了一个 for 循环的回调函数来点击不同的选择,并在每个按钮中进行点击搜索。但是,我收到错误:将
我正在从 select -> option 中选择选项,每次重新加载页面时,首先单击下拉菜单时,我会收集所有要选择的元素句柄。我想经历所有这些。我只能选择第一个,然后出现此错误: JSHandles
我一直在阅读 Puppeteer API 文档,他们有 jsHandle 和 elementHandle(他们说这是 jsHandle 的扩展)。 好像page.evaluateHandle page
我可以很好地传递 native 对象(字符串、列表、数字等),但每当我尝试传递 JSHandle 或 ElementHandle 时,我都会收到此错误消息:“TypeError:将循环结构转换为 JS
我有一个正在使用 Puppeteer 测试的 React/Redux 应用程序。根据文档,我使用以下代码来显示控制台输出: page.on('console', msg => { for(le
我可以很好地传递 native 对象(字符串、列表、数字等)或 JSHandle(感谢 @hardkoded),但不知道如何同时低音这两个对象 这是我现在的代码,字符串 (deployName) 硬编
我是一名优秀的程序员,十分优秀!