gpt4 book ai didi

javascript - 发送消息到 console.log (jest puppeteer)

转载 作者:太空宇宙 更新时间:2023-11-03 22:49:08 25 4
gpt4 key购买 nike

为什么我在 console.log 中看不到我的消息 page.evaluatepage.$page.$$page.$evalpage.$$eval并且无法访问变量吗?

let variable = 0;
const divColors = await page.evaluate(() => {
const divs = Array.from(document.querySelectorAll('.map-filters div'));
let text = divs.map((element, index) => {
console.log(element.textContent)
variable =1;
return element.style.color;
})
return text;
})

为什么在此示例中我无法执行 variable=1console.log(element.textContent) 操作?

最佳答案

您在 page.evaluate 内部使用 console.log,因此它将其输出记录到 Chromium 浏览器而不是 Node 输出。要在 Node 控制台中查看来自浏览器的控制台消息,需要在创建 page 对象之后且在脚本中使用 console.log 之前订阅它们:

const page = await browser.newPage();

page.on('console', consoleObj => console.log(consoleObj.text()));

page.evaluate(...);

至于variable变量,实际上你的脚本中有两个。

第一个存在于 node.js 上下文中:

let variable = 0;

另一个 - 在网页上下文中:

page.evaluate( () => {
variable = 1;
})

他们是完全不同的。将 page.evaluate 视为通往另一个世界的门户:那里存在的对象仅存在于 puppeteer 所在的 Web 浏览器中打开的页面上的 JavaScript 运行时内部驾驶。 node 有自己的运行时和自己的一组对象。

您可以将数据从 node 传递到 page.evaluate:

let variable = 420;

page.evaluate(variable => {

// it is now passed here from outside
console.log(variable)

}, variable);

关于javascript - 发送消息到 console.log (jest puppeteer),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56272865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com