Puppeteer 系列踩坑日志—3—开启支持插件

2021-04-15 10:10:00

参考地址 Puppeteer 系列踩坑日志—3—开启支持插件

在使用puppeteer自动化的过程中,会发现其实开启的chrome往往自动禁用了插件功能,如果我们想在自动化测试的过程中,再去使用一些常用的插件提升效率(偷懒)的话,就行不通了,其实解决办法还是有的,我们今天就来讲解这个问题。
疑问1:为什么puppeteer刚启动的时候,插件功能是被disable掉的?
  • 这个问题官方那边我并没有找到,但是我个人的猜测是:性能。为了提升puppeteer打开更快这方面的考虑。

疑问2:怎么被禁用的?
  • 首先,我们需要回到 [Puppeteer 系列踩坑日志—2—去掉自动化提示]() 这篇文章里面去看看,开篇提到过chrome命令行,可以回看一下。然后我们会发现在 lanucher.js 里面,启动的默认参数中有一个叫做: --disable-extensions 这个参数其实都不用去看说明了,名字很清楚。但是我们必须要挖掘一下,看看peter清单里有没有什么解释。

  • perter列表里的清单解释非常地简单,就是这意思。但是我们在下面,又发现了一个其他的参数 --disable-extensions-except 看下解释: 禁用除逗号分隔列表中指定的扩展之外的扩展。如果不希望打开,但是又要加载插件,可以使用这个,也算是看文档的意外收获。

疑问3:如何指定插件?
  • 刚才我们已经解决了插件功能被关闭的问题,那么接下来实现加载插件。

  • 先说一个题外话,怎么把现在chrome里安装好的,商店的插件,拿出来:

    • 地址栏: chrome://version/

    • 然后看到:个人资料路径。电脑里打开这个路径找到 Extensions 这个文件夹,里面就全部都是谷歌插件的安装包,具体名称需要根据插件 ID 去核对。

image-20200318143751635.png

  • 那么接下来,我们先拿到自己的插件路径(绝对路径,或者node解析出来的路径),开始加载,话不多说,上代码:

 const browser = await puppeteer.launch({
   ...    args : [`--disable-extensions-except=${插件路径1},${插件路径2},${插件路径3}...`]
  });

这样就轻松解决了问题。

  • 其他坑:可能你会遇到插件加载有问题,这是可能插件文件夹里面存在着一些乱七八糟的文件。这个可以参考谷歌插件开发文档,里面的东西尽可能保持干净即可。windows下可能还会出现隐藏文件,如果实在删不掉可以尝试新建文件夹复制出来一份。

  • 如有遇到其他问题,评论下方可以联系我,共同学习排坑。


  • 2018-09-08 16:04:25

    Android SQLiteDatabase使用详细教程

    Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。SQLiteDatabase的常用方法方法名称方法表示含义openOrCreateDatabase(Stringpath,SQLiteDatabase.CursorFactoryfactory)

  • 2018-09-09 02:25:09

    单例模式的好处和缺点?为什么要用单例模式?

    单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

  • 2018-09-09 02:31:48

    基于VCamera,仿微信录制短视频

    基于VCamera,Android仿微信录制短视频,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request。

  • 2018-09-13 22:24:04

    QQ微信登录失败,报100044错

    我用的mob的maven集成方案,说实在的从一开始用maven集成方案就是一个坑啊。每次build都会重新加载所有maven包,后来通过gradle offline总算解决了。

  • 2018-09-26 15:14:23

    PHP JSON_ENCODE 不转义中文汉字的方法

    PHP 生成JSON的时候,必须将汉字不转义为 \u开头的UNICODE数据。 网上很多,但是其实都是错误的,正确的方法是在json_encode 中加入一个参数 JSON_UNESCAPED_UNICODE