Selenium 的基本介绍

Mar 14 2020

Selenium 到底是什么?

Selenium,全称叫做:The Selenium Browser Automation Project

它是用来做 Web 浏览器自动化的项目

支持编写 Selenium 代码的语言


支持的主流语言较多,因此在使用 Selenium 进行 Web 自动化时更容易上手,适合更多的开发者

支持自动化的浏览器


要注意浏览器的版本,一些浏览器的早期版本或许不能很好的被支持

Selenium 核心


1. WebDriver

提供编写 Selenium 自动化代码的 API。使用这些 API 则可以像用户一样去操作浏览器

2. IDE

在 Firefox 和 Chrome 浏览器中提供的扩展工具,这是一种快捷生成测试的方式,容易上手。对于想快速了解 Selenium 是如何操作的,IDE 非常适合,而且也支持脚本的录制和回放

undefined

另外要提及的是,IDE 提供了控件元素定位工具,这在使用 API 编写测试时能提供很大帮助

undefined

undefined

3. Grid

用于将 WebDriver 自动化脚本应用到多台计算机和多个浏览器上,达到并行测试的目的,并且可以集中管理浏览器的版本和配置,适合于网站在浏览器上的兼容性测试

由于 WebDriver 是 Selenium 的核心组件,因此下文重点描述 WebDrvier 的内容,IDE 和 Grid 不过多介绍

Selenium WebDriver 核心


1. API

API 就是描述了一套提供给我们测试代码中可以使用的接口,调用这些接口能实现对浏览器的控制

2. 库文件

API 的具体实现。也就是我们在自动化工程代码中添加的依赖(dependency)。比如 Java 中的 .jar,C# 的 .dll 文件

3. 代理程序(驱动程序)

对于浏览器的控制,Selenium 需要借助代理程序,这些代理大多数都是浏览器厂家自己提供的(因此不同浏览器的代理程序不一致)。Selenium 借助它们来完成控制操作。同时,代理跟浏览器运行在一个平台上。如果我们操作的是远程机器的浏览器,那么代理也运行在远程机器

4. 测试框架

用来组织 Selenium 测试代码的库。比如 Java 中的 JUnit

这不是必须的,使用测试框架只是为了方便组织用例,如果有自己的一套方式方法,完全不需要用框架

Selenium WebDriver 的测试架构


1. WebDriver 直接通信方式控制本地浏览器

undefined

使用这种方式组织测试时,需要将 WebDriver 可执行文件添加到系统 path 环境变量中,并启动代理程序,比如测试 Chrome 浏览器的话,启动 chromedriver

1
2
Starting ChromeDriver 2.25.426935 (820a95b0b81d33e42712f9198c215f703412e1a1) on port 9515
Only local connections are allowed.

初始化 driver 代码如下(这里用 Chrome 作为示例)

1
2
3
4
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

WebDriver driver = new ChromeDriver();

2. WebDriver 间接通信控制远程浏览器 1

undefined

这里要多提一下 RemoteWebDriver,它由 remote webdriver serverremote webdriver client 构成

server 可执行程序为 selenium-server-standalone-{VERSION}.jar,运行在要测试的浏览器所在计算机上(如果测本地浏览器的话就在本地运行)

client 用来与 server 进行通信,我们编写自动化代码时使用它

此测试架构是较为常用的一种

初始化 drvier 代码如下(以 Chrome 为例)

1
2
3
4
5
6
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setCapability("browserVersion", "80");
chromeOptions.setCapability("platformName", "Windows 10");
WebDriver driver = new RemoteWebDriver(new URL("http://www.driver-index.com"), chromeOptions);
driver.get("http://www.example.com");
driver.quit();

3. WebDriver 间接控制远程浏览器 2

undefined

与 Selenium RC 的比较

关于 Selenium 的基本介绍就到这里,考虑是否要开展 Web UI 自动化,需要思考以下几点: