当前位置: 首页 > 知识库问答 >
问题:

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

古棋
2024-10-12

使用高版本的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源码。

共有1个答案

尹兴生
2024-10-12

针对你描述的问题,使用高版本的 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国密浏览器的支持团队报告此问题。他们可能能提供更专业的帮助或修复此问题。

结论

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

 类似资料:
  • 浏览器兼容 主流浏览器都兼容 HTML5 的新标签,对于 IE8 及以下版本不认识 HTML5的新元素,可以使用 JavaScript 创建一个没用的元素来解决,例如: <script> document.createElement("header"); </script> 也可以使用 shiv 来解决兼容性问题,详情可参考 HTML5 Shiv

  • 我们在div里放一个img,发现: 在html和html5中,div的长宽是不同的,后者的高度要超过几个像素。 比如说,下面这个是html的。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css">

  • 概览 本章描述了IE在处理自定义的HTML属性和标签时的一些独特之处。如果你要让你的AngularJS应用兼容IE8和IE8以下的版本的话,你需要仔阅读本章。 简易版 要让你的AngularJS应用在IE中正常运行你必须: 确保JSON字符串能被正常解析(IE7需要),你可以使用JSON2或者JSON3来实现。 你不能使用自定义的元素标签,如<ng:view>(你只能使用属性的形式,如<div n

  • 火狐浏览器是符合预期的,没有卡顿;就谷歌不对劲;能删除的代码都删除试过了,也没找到原因。 主要是问问有没有遇到类似情况的。代码不好提供.. 这是性能分析报告,不知道对各位查找问题有没有帮助 链接:https://pan.baidu.com/s/1HW_3XcKbZxlSxt11JD2tkw?pwd=07ry 提取码:07ry

  • 本文向大家介绍bootstrap3 兼容IE8浏览器!,包括了bootstrap3 兼容IE8浏览器!的使用技巧和注意事项,需要的朋友参考一下       近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单、按钮组、按钮下拉菜单、导航、导航条、面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等,bootstrap都已经预先定义好了,当我们制作网页上,只需直

  • B站网页视频暂停后再播放就会一直缓冲.网络良好不卡,换浏览器也不行。 只有重启可以解决问题