如何在高版本puppeteer-core中解决启动360国密浏览器后页面卡顿问题?

新手上路,请多包涵

使用高版本的puppeteer-core时,调用360国密浏览器[版本 v13.1.2002.401 86.0.4240.198]
代码如下:
执行
// 启动浏览器

    browser = await puppeteer.launch({
        headless: false,
        executablePath: 'C:\\Users\\24296\\AppData\\Roaming\\360ent\\Application\\360ent.exe',
        args: ['--window-size=1920,1080'] // 手动设置窗口大小
    });

后卡在一个空白页,需要点一下空白页,如下图,代码才能继续往下走后续的const page = await browser.newPage();,低版本则不会,因为是单点登录,不会仅仅是适配此浏览器,如果是高版本应该如何处理呢,不降版本的情况下有何方案。
image.png

降低puppeteer-core版本到10.2可行,但是其他高版本的浏览器则有问题。我希望在高版本中不要阻塞在此位置,有一个兼容处理的方案,不限于修改module源码。

阅读 661
avatarAI BotBETA

针对你描述的问题,使用高版本的 puppeteer-core 启动360国密浏览器时出现页面卡顿,这可能是由于多种原因导致的,包括但不限于浏览器与puppeteer的兼容性问题、浏览器内部的安全机制或初始化过程等。以下是一些可能帮助解决问题的方案:

1. 延长等待时间

在创建新页面之前,可以添加额外的等待时间,确保浏览器完全初始化并准备好接收指令。这可以通过使用 setTimeoutpuppeteerwaitForFunction 等方法实现。

browser = await puppeteer.launch({
    headless: false,
    executablePath: 'C:\\Users\\24296\\AppData\\Roaming\\360ent\\Application\\360ent.exe',
    args: ['--window-size=1920,1080']
});

// 等待一段时间,例如5秒
await new Promise(resolve => setTimeout(resolve, 5000));

const page = await browser.newPage();

2. 禁用或绕过浏览器安全机制

某些浏览器在启动时可能会执行额外的安全检查或初始化过程,这些过程可能会与puppeteer的自动化脚本产生冲突。尝试查找是否有相关的命令行参数可以禁用这些安全机制。

3. 使用puppeteer的调试日志

启用puppeteer的调试日志可以帮助你更详细地了解浏览器启动和页面加载过程中发生了什么。这可以通过设置环境变量或调用API来实现。

# 在命令行中设置环境变量
DEBUG="puppeteer:*" node your_script.js

或者在代码中:

require('puppeteer').launch({
    // ...其他选项
    env: { DEBUG: 'puppeteer:*' }
}).then(async browser => {
    // ...
});

4. 尝试使用其他自动化工具

如果puppeteer在特定场景下表现不佳,你可以考虑使用其他自动化测试工具,如Selenium、Playwright等,这些工具可能有更好的兼容性或更灵活的配置选项。

5. 检查浏览器版本和puppeteer的兼容性

虽然你不想降低puppeteer的版本,但检查当前使用的puppeteer版本与360国密浏览器的兼容性是很重要的。有时候,最新版本的库可能还未完全适配某些浏览器的最新版本。

6. 提交问题到puppeteer或浏览器厂商

如果问题持续存在且无法通过上述方法解决,你可以考虑向puppeteer的开发者或360国密浏览器的支持团队报告此问题。他们可能能提供更专业的帮助或修复此问题。

结论

由于每个浏览器都有其特定的实现和限制,因此没有一种通用的解决方案可以适用于所有情况。在解决此类问题时,通常需要尝试多种方法,并根据具体情况进行调整。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏