在 Puppeteer 中访问 javascript 窗口变量
P粉787806024
P粉787806024 2023-09-04 23:32:41
[JavaScript讨论组]

在我的 Puppeteer 脚本中,我使用文件 JS 在加载页面之前执行:

const preloadFile = fs.readFileSync('./file.js', 'utf8');
const id = await page.evaluateOnNewDocument(preloadFile);

file.js 包含:

const i = setInterval(()=>{
  if (window.turnstile) {
    clearInterval(i)
    window.turnstile.render = (a,b) => {
        b.userAgent = navigator.userAgent
    window.tsCallback = b.callback
    window.action = b.action
    window.data = b.cData
      console.log(b)
      return 'foo'
    }
  }
},50)

此脚本在浏览器控制台上打印一个对象(操作、Cdata、回调...)

我想从pupetter端获取这个对象并能够调用函数callback()。

我使用了 page.evaluate(),但对我不起作用

P粉787806024
P粉787806024

全部回复(1)
P粉193307465

您可以使用我的 Puppeteer 包装库 https://github.com/wix-incubator/ bubanai/pulls 来实现这个目标(从浏览器控制台获取对象),使用 new ConsoleDriver(context).getMessages() 方法,然后将接收到的对象从数组转换为 JSON...

或者只是将 ConsoleDriver 代码复制到您的项目中。

参考

使用示例

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号