什么是无头浏览器 平时我们上网查阅信息、观看视频等活动,一般都是通过浏览器完成的,IE、chrome、火狐等都是我们经常使用的浏览器,它们都拥有非常好用的可视化 *** 作界面,配合鼠标就可以进行网上活动。
而无头浏览器也叫做无界面浏览器,它可以运行在服务器端,也具有普通浏览器的能力,只是它没有界面,
常见的框架有Puppeteer、Phantomjs等
无头浏览器的特点
1、使用方式
我们以Phantomjs为例,既可以以cli方式使用,也可以在代码中require进去,它甚至可以提供一个类似于node那样的REPL环境。
2、加载网络资源
既然是浏览器,加载网络资源显然是其基本的能力,resourceReceived和resourceRequested这两个回调函数可以监控加载的资源,利用它们就可以做一些网络监控。既然能获取网页的内容,那么就可以用来做爬虫!
3、截图
既然是无界面的,那如果我们想看加载的页面是什么样子的,怎么办?它提供了截图功能,使用render方法就可以生成页面快照,还提供了设置网页大小等功能。
4、插入外部资源
它可以向页面中插入外部资源,比如插入一个js,这一点上比较像chrome插件。
5、生成自定义网页
它既能获取人家的网页,同时也能生成自己的网页,设置content属性就行。
6、提供document和window对象
在服务器中是不存在document和window对象的,但是Phantomjs提供了这两个变量。
7、 *** 作页面
既然Phantomjs提供了document和window这两大对象,那么我们就可以像在普通浏览器里面一样使用它们的方法,比如 *** 作dom元素、发送dom事件等。
8、测试
Phantomjs本身并不是测试框架,但是它可以配合jasmine等测试框架进行自动化测试。
无头就是headless 的中文,所谓无头浏览器就是没有用户界面的浏览器。
它可以运行在服务器端,通过命令行的方式调用,比如需要截取任意网站的截图,网址由用户输入,那就需要在服务器端装一个headless浏览器,可以命令调用来截图。
除了截图,还能 *** 作DOM,做一些爬虫的事情,在服务器端完成自动化 *** 作。
常用的有三个:Selenium,PhantomJS,Chrome-headless 。
使用举例:
这样就实现了截取百度这个网站的页面。
更复杂的 *** 作就要看手册了
1 先使用如下方式抓取页面内容
URL url = new URL(">
$(window)on("load",function(){
//页面属性,,内容完全加载完,执行
}
$(document)ready(function() {
//页面DOM结构加载完执行
}
gitee码云项目地址
开始
进入一个新的项目目录,命令模式进入项目目录
然后一直回车,内容可不填。
修改 packagejson 文件为下面的内容:
安装依赖
在项目根目录下创建indexjs文件
运行
等待几秒后,如果在项目目录下生成,说明成功了。
gitee码云项目地址
背景
在表单(web页面)测试过程中,要经常对表单基本功能进行回归,曾经考虑过使用webUI自动化工具,减少重复性的 *** 作,但是因为之前用过appium,对UI自动化的体验不是很好,所以有些纠结,但是,再仔细想一下,有可能存在比较好用又确实能提升效率的工具,也不妨去尝试一下。
上网查询了一下,puppeteer具有可以使用录制脚本的工具puppeteer-recorder、截图等功能,找了个demo开始试了一下,发现坑较少,安装方便,使用比较流畅。
puppeteer介绍
Puppeteer 是一个Node库, 它提供高级API,通过DevTools Protocol 来控制Chrome 或 Chromium。 Puppeteer 默认运行为headless ,但是可以配置为运行为non-headless。详见文末参考链接。
效果展示
目录结构
cases:用例脚本
config:配置文件,可区分测试、线上环境
screenshot_outputs:输出的截图文件
utils:用到的通用方法
测试思路
1、在脚本中写入测试执行步骤
2、运行脚本
3、查看执行结果(截图),查看是否符合预期。
这样 *** 作会使简单很测试很多。就拿表单人工审核为例,全部人工 *** 作的话,需要填写并提交表单,登录表单运营后台,找到对应的目录及表单,对表单进行审核,再重新打开表单并进行查看,而自动化的话,在写好脚本(在脚本中可进行接口请求)之后,就可以直接运行脚本,查看结果。
环境搭建
1、安装puppeteer:npm install puppeteer(前提是安装了node、npm)
2、安装chrome插件puppeteer-recorder(可自行百度,比较简单)
3、npm init,初始化一个项目
脚本编写
遇到问题
1、puppeteer-recorder只能录制获取元素、点击元素 *** 作,没有获取到填写文本的 *** 作,需要修改或添加已录制好的脚本
2、有些地方例如截图前,接口请求结束后,需要使用等待方法。await pagewaitFor(3000)
3、使用await进行接口请求,不然会出现同步异步问题,后面的语句开始执行(但是要用到的参数还没有获取到)
参考:
>
这个的话你要知道什么是爬虫啊,
爬虫就是获取一个网站的 html 页面,
然后获取里面的元素,获取对应的链接的那个元素,就得到 src 链接,就获取到商品网址了,额
建议先去了解爬虫的基本知识,然后选择一个会的语言去尝试一个相对简单的爬虫 demo
可以看看我的百度经验:nodejs 爬虫-Puppeteer 包的使用,以后更多的文章可以看看
谷歌浏览器在17年自行开发了Chrome Headless特性,并与之同时推出了puppeteer,可以理解成我们日常使用的Chrome的无界面版本以及对其进行 *** 控的js接口套装
借助puppeteer,我们可以对页面进行爬取,更加灵活
然而在本地运行没问题情况下,放置阿里云服务器上面运行是却不能运行,一顿百度 *** 作后发现已经有类似的问题解决方案,记录下以备后期回忆
方案
然后正常运营就可以了
puppeteer: >
以上就是关于无头浏览器是什么它有什么用全部的内容,包括:无头浏览器是什么它有什么用、Java爬虫 动态页面、nodejs puppeteer打开一个页面后,在点击跳转到另一个页面 怎么判断这么页面是否所有的元素都已加载完成等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)