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-12-11 10:20:40

    Android下载图片到相册

    调用以上系统自带的方法会把bitmap对象保存到系统图库中,但是这种方法无法指定保存的路径和名称,上述方法的title、description参数只是插入数据库中的字段,真实的图片名称系统会自动分配。 或者

  • 2018-12-11 15:45:00

    Laravel中七个非常有用但很少人知道的Carbon方法

    在编写PHP应用时经常需要处理日期和时间,Carbon继承自 PHP DateTime 类的 API 扩展,它使得处理日期和时间更加简单,这篇文章主要给大家分享了Laravel中七个非常有用但很少人知道的Carbon方法,需要的朋友可以参考下。

  • 2018-12-13 11:41:23

    Android drawable微技巧,你所不知道的drawable的那些细节

    好像有挺久时间没更新博客了,最近我为了准备下一个系列的博客,也是花了很长的时间研读源码。很遗憾的是,下一个系列的博客我可能还要再过一段时间才能写出来,那么为了不至于让大家等太久,今天就给大家更新一篇单篇的文章,讲一讲Android drawable方面的微技巧。

  • 2018-12-13 17:14:41

    Android安全开发之浅谈密钥硬编码

    在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码、文件中,这样做会引起很大风险。信息安全的基础在于密码学,而常用的密码学算法都是公开的,加密内容的保密依靠的是密钥的保密,密钥如果泄露,对于对称密码算法,根据用到的密钥算法和加密后的密文,很容易得到加密前的明文;对于非对称密码算法或者签名算法,根据密钥和要加密的明文,很容易获得计算出签名值,从而伪造签名。

  • 2018-12-13 17:17:02

    轻松实现动态获取Android手机CPU架构类型

    .so文件是unix的动态连接库,是二进制文件,作用相当于windows下的.dll文件。 他使用了C/C++代码编写的可以操作硬件比java更高级的 底层代码,执行速度和效率比其他语言要高。 在Android中调用动态库文件(*.so)都是通过jni的方式。

  • 2018-12-13 22:48:48

    Android MultiDex实践:如何绕过那些坑?

    MultiDex, 顾名思义,是指多dex实现,大多数App,解压其apk后,一般只有一个classes.dex文件,采用MultiDex的App解压后可以看到有classes.dex,classes2.dex,… classes(N).dex,这样每个dex都可以最大承载65k个方法,很大限度地缓解了单dex方法数限制。

  • 2018-12-14 13:32:18

    解决chrome调试手机模式没有鼠标问题

    F12后,切换到手机模式,方向没有鼠标,这对于调试前端页面来说无疑是一大难题,看不见只能盲点, 以为是浏览器问题,清理缓存,升级浏览器,清除插件等都不好使。 后来查到资料说是显卡问题。果然还真是显卡问题。