Web自动化

这里所说的Web自动化是所有跟页面相关的自动化,比如页面爬取,数据抓取,页面内容检测,页面功能测试,页面加载性能测试,页面回归测试等等,当前主要由如下几种解决方式:

文本数据获取

这就是各种request库或者类似curl这样的工具做的事情,拿到的是页面的文本,然后进行XML文档解析,获得相应的内容。但如果页面有一些动态执行的内容,比如JavaScript生成跳转URL,这样就搞不定了,需要有JS引擎的工具来搞,比如再配合JS引擎自行实现的工具,或者直接使用浏览器内核来搞的工具。

按照浏览器的方式来执行

这就是各种使用浏览器内核来实现的工具,比如基于WebkitPhantomJS, 基于GeckoSlimerJS, 经过包装的CasperJS兼容PhantomJSSlimerJS,以及基于v8JS引擎和.net平台的trifleJS等。这些工具更新迭代跟不上Web标准的发展,新的Web标准无法得到良好的支持。

通过协议直接操作真实浏览器

这就是Selenium的实现方式,通过WebDriver协议进行通信,浏览器和浏览器驱动都实现了C/S结构的WebDriver协议,Selenium通过浏览器的驱动包,来发送操作请求,浏览器根据请求响应相应的操作。这样实现有一个问题是始终有一个真实浏览器的界面在渲染和变化,一方面效率低下,另一方面在服务端环境无法运行。于是就衍生出了使用Xvfb(virtual framebuffer X Server) 来配合实现在服务器环境下的运行,基本解决了问题。但每一种浏览器的特性支持都依赖于相应的驱动的实现和支持情况。

无界面浏览器

前面的实现方式都或多或少有自己的问题或者局限,如果浏览器本身支持在服务端环境运行,这将是一个近乎完美的解决思路。Chrome 59开始支持无界面模式,Firefox 55支持Linux版的无界面模式,Firefox 56支持全平台的无界面模式,这样一来,使用方不用被动等待浏览器的WebDriver的实现。

Headless Chrome相关的对比

Headless 是一种在无图形界面环境运行的一种能力,比如高性能的服务器端环境,参考Healess Software。

PhantomJS的问题

  • 使用老版本的Webkit,不支持新的Web标准,跟真实浏览器存在差异

  • 开发者维护难度大,主要维护者不干了,起因是Chrome 将支持 Headless模式

  • 要解决的问题多,1800+

  • 内存占用高,并发有问题,不稳定,有些奇奇怪怪的bug

Selenium的问题

  • 使用WebDriver接口和浏览器驱动来操作真实浏览器,带界面渲染,速度慢

  • 需要有图形界面,显示设备的支持

  • 需要使用Xvfb(virtual framebuffer X Server)

    • X是架构无关的远程图形界面和输入设备兼容的系统,C/S架构

    • 在没有物理输入和显示设备的机器上运行

    • 这里可以简单理解为虚拟显示器或者显示器模拟器

  • 也支持Headless实现,实现跟Web标准有差异

  • 通过ChromeDriver(WebDriver的Chrome实现)的来操作Chrome,需要依赖ChromeDriver的更新

    • 可以在ChromeDriver下载查看支持的Chrome版本

Headless Chrome带来的优势

  • 资源占用少(相对于PhantomJS)

  • 服务端环境(命令行,无图形界面)

  • 支持现代Web标准和技术(ES6,ServiceWorkers,WebGL...)

  • 行为符合Web规范、版本能自动更新

  • Chronium/Chrome团队维护

Headless Chrome 参考资料

  • Headless Chrome ReadMe

  • Getting Started with Headless Chrome

  • Chrome DevTools Protocol

  • Chrome DevTools Protocol Viewer

Web自动化之Headless Chrome概览相关推荐

  1. Serverless 实战——使用 Rendertron 搭建 Headless Chrome 渲染解决方案

    为什么需要 Rendertron? 传统的 Web 页面,通常是服务端渲染的,而随着 SPA(Single-Page Application) 尤其是 React.Vue.Angular 为代表的前端 ...

  2. Google Puppeteer加入到headless Chrome的工具行列

    Chrome DevTools团队发布了Puppeteer,一个基于Node API的headless Chrome工具.Puppeteer提供了与其他第三方工具相似的功能,促使它们不断地创新与进步. ...

  3. centos7下安装无头浏览器(headless Chrome)

    selenium是当前流行的WEB自动化工具,它可以启动本地浏览器,访问网页,模拟点击操作等,在自动化测试和网络爬虫中非常有用. 一般开发环境都是有图形界面的,所以本地只要安装普通浏览器就行了,但是在 ...

  4. 用Python驱动Headless Chrome

    Headless Browser(无头的浏览器)是什么鬼? 简而言之,Headless Browser是没有图形用户界面(GUI)的web浏览器,通常是通过编程或命令行界面来控制的. Headless ...

  5. Python+selenium Web自动化持续更新

    保姆入门级Web自动化学习资料 前言 Web自动化环境搭建 软件准备 开始环境搭建 浏览器和驱动下载 谷歌浏览器驱动版本对应以及下载: edge浏览器驱动版本对应以及下载: ie浏览器驱动官方地址: ...

  6. 从零开始Web自动化(三):通过selenium,9行代码实现打字网站的自动打字

    写在前面: 这个专栏主要是分享一些python.Web自动化的相关知识. 需要你具备一定的python基础,参考教程:廖雪峰python教程 掌握红框中的内容即可! 通过实战项目让你学会包括:pyth ...

  7. Web自动化测试之playwright:概述

    playwright是由微软开发的Web UI自动化测试工具, 支持Node.js.Python.C# 和 Java语言,本文将介绍playwright的特性以及它的简单使用. 目录 playwrig ...

  8. python selenium - web自动化环境搭建

    前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...

  9. Selenium Web 自动化 - Selenium常用API

    Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作   1.1 用webdriver打开一个浏览器   1.2 最大化浏览器&关闭浏 ...

最新文章

  1. Swift2.1 语法指南——类型转换
  2. 哪些是我们必须要会深度学习知识
  3. Git使用教程-命令总结大全
  4. Matlab之switch-case语句
  5. java 百度贴吧 爬虫_JAVA爬虫入门
  6. RedMine 1.3.3 安装攻略
  7. php 计算 目录大小,php计算整个目录大小的方法
  8. 华为 虚拟键盘_华为mate30 pro虚拟机械键盘特有体验,虽是虚拟,但却感受逼真...
  9. 有关Canvas的一点小事—图像绘制
  10. 飞鸽传书2007很给力
  11. [Web Chart系列之五] 6. 实战draw2d之ConnectionRouter
  12. 厚积薄发 - 关于runtime的几个问题
  13. 3dm下载的都是linux游戏,3DM的游戏怎么下载和安装(没智商的小白用户)
  14. java关键字匹配算法_简单关键词匹配算法
  15. CentOS 7下Red5流媒体服务器的搭建与测试
  16. 计算机逻辑门电路图,关于门电路详细解析
  17. 积分电路与低通滤波器
  18. sox处理mp3_sox :音频文件转换命令
  19. 各个编程语言都有哪些「黑点」?
  20. sfm-learner学习心得

热门文章

  1. 交叉科学不仅不是边缘学科,反而应是科研主流
  2. “我在苹果商店下载了一个诈骗 App,损失 60 万美金!”
  3. 微软为什么从 C/C++ 转向了 Rust?
  4. Spring Cloud Feign 熔断机制填坑
  5. C++中的stack类、QT中的QStack类
  6. 理解Android编译命令(转)
  7. 六大策略迎接数据中心巨大变革
  8. FileReader采用的默认编码
  9. Linux下Java Font 中文字体不显示
  10. 重磅!阿里巴巴江苏总部落户南京建邺区