Selenium常用作自动化处理和网络爬虫。
自动化测试
自动化测试可以涉及和试用的范围主要在以下方面:
- 基于Web UI的浏览器应用的界面测试
- 基于WebService或者WebAPI的服务契约测试
- 基于WCF、.net remoting、Spring等框架的服务的集成测试
- 基于APP UI的移动应用界面测试
- 基于Java、C#等编程文件进行的单元测试
- 基于Web UI的自动化测试工具主要有两大类:付费的商业版工具和免费使用的开源版工具。典型的有两种:
(1)UFT,QTP被惠普收购以后的新名称。
- 通过程序的录制,可以实现测试的编辑
- 录制的测试脚本是 VBScript 语法
- 成熟版的商业付费工具
- 工具比较庞大,对具体的项目定制测试有难度
(2)SELENIUM,本次选择的开源工具
- 本身不是测试工具,只是模拟浏览器操作的工具
- 背后有 Google 维护源代码
- 支持全部主流的浏览器
- 支持主流的编程语言,包括:Java、Python、C#、PHP、Ruby、JavaScript等
- 工具很小,可以实现对测试项目的定制测试方案
- 基于标准的 WebDriver 语法规范
什么是Selenium?
Selenium 是开源的自动化测试工具, 应该是最广泛使用的开源方案。它主要是用于Web 应用程序的自动化测试,不只局限于此,同时支持所有基于web 的管理任务自动化。
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。 Selenium 能够在一个或多个浏览器中执行这些测试。
webdriver使用配置
在使用WebDriver来操作浏览器时,请先下载相应的driver
#使用Chrome无头浏览器
from selenium import webdriver
driver = webdriver.Chrome()
各浏览器Driver下载地址
网络爬虫
-
1、requests
直接请求,获取内容 -
2、 获取Ajax请求
前端技术在不断变化,数据的加载方式也不再是单纯的服务端渲染了。现在你可以看到很多网站的数据可能都是通过接口的形式传输的,或者即使不是接口那也是一些 JSON 的数据,然后经过 JavaScript 渲染得出来的。
抓包分析流的方式,也存在一定的缺点。
(1)因为有些接口带着加密参数,比如 token、sign 等等,模拟难度较大;
(2)抓包的方式只适合量小的情况。如果有一百、一千个,甚至五千、一万个网站要处理时,该如何处理?还一个一个分析数据流?一个一个去抓包吗?
- 3、自动化框架
自动化框架:Puppeteer、Pyppeteer、Selenium、Splash
使用这些框架获取HTML源码,这样我们爬取到的源代码就是JavaScript 渲染以后的真正的网页代码,数据自然就好提取了。同时,也就绕过分析 Ajax 和一些 JavaScript 逻辑的过程。这种方式就做到了可见即可爬,难度也不大,同时适合大批量的采集。