selenium
介绍
Why?
缘由: 测试自动化, 利用软件来重复性的运行项目中测试, 并为回归测试提供反馈. 其中重复性和自动化
执行时测试自动化的重中之重.
selenium: 最广泛的自动化测试的开源方案
, 其他商用方案则在这里不会进行阐述.
测试自动化的工作:
- 频繁的回归测试(检验软件原有功能在修改后是否保持完整)
- 快速的反馈(高执行效率来快速的定位应用是否正常)
- 无限制的测试用例迭代执行
- 敏捷开发和极限编程
- 遵循测试用例
When?
关于自动化和手动测试, 后者在一些关键的时间点时必须的:
- 应用接口在不久的未来即将修改, 此时没必要为了自动化测试写一堆匹配的测试用例, 直接使用手动来测试用例
- 预留测试时间不足, 短期内无法快速的写完测试用例, 此时使用手动测试更快
Who are you?
selenium 是一组软件工具集, 每一个都是用不同的方式来支持自动化, 一般而言, QA 工程师仅仅专注于某几个
满足项目需求的工具. 当然, 根据不同的应用场景, 使用不同的工具才是真正的合理运用.
selenium 是一个支持多浏览器平台进行测试的工具集.
How you grow up?
selenium: 诞生于 2004, Jason Huggins 开发了一个驱动页面进行交互的 Javascript, 让多个浏览器自动返回测试结果.
该库成为了 Selenium RC(远程控制) 和 Selenium IDE 所有功能的基础.
webdriver: 诞生于 2006, 一名 google 开发者 Simon Stewart 基于 selenium 进行开发以便绕开浏览器对 Javascript 的
安全限制, 以便能够通过 browser 和 system 的本地方法和浏览器进行通话, 来解决 javascript 的环境沙箱操作.
webdriver 的目标就是为了解决 selenium 这个 javascript 的限制痛点.
selenium2: 又称 selenium webdriver, 诞生于 2008, selenium + webdriver 两个项目的合并
- selenium1: Selenium RC 或者 Remote Control
- selenium IDE: 创建测试脚本的原型工具, 记录用户的操作, 选择指定的语言并导出为指定的脚本用于后续执行
- selenium Grid: 使得 Selenium RC 解决方案能提升针对大型的测试套件的测试能力
安装
对于 firefox, 还需要额外的安装 geckodriver
Centos
对于非窗口级别系统级别的系统, 特别是服务器,
对于 selenium/webdriver, 则需要提前使用Xvfb(X virtual framebuffer)
, 利用内存计算模拟出图形
界面.
安装命令如下:
1 | # 安装chromium, webdriver, Xvfb |
如果需要安装 google-chrome, 则首先需要设置 google-chrome 源: vim /etc/yum.repos.d/google-chrome.repo
1 | [google-chrome] |
安装 google-chrome:
1 | # 获取包信息 |
对特定 chromedriver 版本的安装:
1 | wget -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/2.38/chromedriver_linux64.zip |
Mac
安装 chromedriver: brew install chromedriver
安装 selenium: pip install selenium
webdriver
selenium 常常用于爬虫, 用于规避反爬, 无限制的的执行 javascript 渲染, driver-驱动器
PhantomJS
一款基于 Webkit 的”无界面-headless”浏览器, 将网站加载到内存中并执行页面上的 Javascript 代码.
缺点:
- 官方放弃维护
- 进程可能无法正常关闭, 只能通过 kill 来完成
- 进程无法退出时可能造成 CPU 超负载运行
Firefox
selenium 对 firefox 的支持度最高
缺点:
- 无”headless”模式
- 程序异常时会输出大量的日志信息
chrome
支持”headless”, 并且可以使用 chromnium 来作为 webdriver, 当然, 后者基于 V8 来提升 Javascript 的效率.
缺点:
- 占用内存较大, 比 PlantomJS 多处三分之一
chromnium 和 google chrome:
- chromnium: chrome 浏览器背后的引擎, 在架构上使用了 Apple 发展出来的 WebKit 排版引擎, BSD 开源
- google chrome: 网页浏览器, 面向用户
Example
Centos
首先, 需要使用 display 模拟出一个图形界面, 之后才可以使用 chromedriver 打开浏览器.
1 | from selenium import webdriver |