Selenium 是一个 Web 应用的自动化框架。主要应用于 Web 应用程序的自动化测试。
通过它,测试工程师可以写出自动化程序,模拟人在浏览器里操作 Web 界面。 比如点击界面按钮,在文本框中输入文字等操作。
除此以外,它还支持所有基于 Web 的管理任务自动化。
Selenium 的特点
- 开源免费:基于这点,能够吸引大部分公司愿意使用它来作为自动化测试的框架
- 多浏览器支持:支持 Chrome、Firefox、IE、Edge、Safari 等浏览器
- 多平台支持:支持 Linux、Windows、Mac 系统平台
- 多语言支持:支持 Java、Python、Ruby、JavaScript、C++ 等开发语言
- 对 Web 页面有良好的支持
- 简单、灵活:使用时调用的
API
简单,只需要使用开发语言导入调用即可 - 支持分布式测试:使用 Selenium Grid
- 支持录制、回放与脚本生成:使用
Selenium IDE
Selenium 的历史版本
Selenium 经历了3个版本,Selenium 1.X
、Selenium 2.X
以及目前的 Selenium 3.X
。
其中 Selenium 1.X
与 Selenium 2.X
最大的区别在于 WebDriver
。 WebDriver
曾经是 Selenium 的竞争对手,能弥补 Selenium 1.X
存在的不足。
而 Selenium 2.X
则是 Selenium 与 WebDriver
两个项目的合并,也就是说,Selenium 2.X
= Selenium 1.X
+ WebDriver
。
直到现在,使用最为广泛的是 Selenium 3.X
,它最大的变化在于:
- 去掉了 Selenium RC
- Firefox 浏览器拥有了独立的驱动——
geckodriver
- Edge 浏览器与 Safari 浏览器原生驱动的支持
Selenium 的工作原理
从上图可以看出:
自动化脚本需要调用客户端库,在 Python 环境中安装 Selenium 库 非常简单,使用 pip install selenium
即可。
脚本程序的自动化请求,都是通过客户端库里的 API
发送给浏览器驱动 -- WebDriver
。再由 WebDriver
来实际执行浏览器的操作。
比如,模拟用户点击界面按钮, 自动化脚本作为客户端,调用客户端库内 click()
的方法,将 点击元素的请求给到指定的浏览器驱动 WebDriver
, 再由 WebDriver
将这个请求转发给浏览器。