固定链接 滴滴云控制台 Selenium 自动化测试初探

滴滴云控制台 Selenium 自动化测试初探

滴滴云控制台 Selenium 自动化测试初探

Selenium 是一系列基于 Web 的自动化工具,提供一套测试函数,用于支持 Web 自动化测试。函数非常灵活,能够完成界面元素定位、窗口跳转、结果比较。具有如下特点:

  1. 支持多浏览器。如 IE、Firefox、Safari、Chrome、Android 手机浏览器等。
  2. 支持多种语言。如 Java、C#、Python、Ruby、PHP等。
  3. 支持多种操作系统。如Windows、Linux、IOS、Android等。
  4. 开源免费。官网:http://www.seleniumhg.org/

一、Selenium 组成部分

1.1 Selenium IDE

该工具是一个用于构建脚本的初级工具,其实是 FireFox 的一个插件,拥有一个易于使用的界面。

它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本。如果没有编程经验,可以通过 Selenium IDE 来快速熟悉 Selenium 的命令。

1.2 Selenium RC

Selenium RC 是 Selenium 家族核心部分。

Selenium RC 支持多种不同的语言编写自动化测试脚本,通过 Selenium RC 的服务器作为代理服务器去访问应用,从而达到测试的目的。

1.3 Selenium WebDriver

当 Selenium2.x 提出了 WebDriver 的概念之后,它提供了完全另外的一种方式与浏览器交互。那就是利用浏览器原生的 API,封装成一套更加面向对象的 SeleniumWebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的)。

由于使用的是浏览器原生的 API,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对 Web 元素的操作和呈现多少会有一些差异,这就直接导致了 Selenium WebDriver 要分浏览器厂商不同,而提供不同的实现。

例如 Firefox 就有专门的 FirefoxDriver,Chrome 就有专门的 ChromeDriver 等等(甚至包括了 AndroidDriver 和 iOS WebDriver)。

1.4 Selenium Grid

Selenium Grid 通过在许多服务器上同时运行测试,将 Selenium Remote Control 带到另一个层次,从而减少了测试多个浏览器或操作系统所需的时间。

这里借助 Selenium WebDriver,以滴滴云控制台默认选中为例展示 Selenium 如何解放测试人员的双手。

滴滴云控制台DC2 创建页承载着复杂的业务逻辑,众多页面都需要跳转到此,并需要根据 URL 上的参数而对 DC2 的配置做默认选中。

当多人开发对业务逻辑耦合时,众多逻辑均会对默认选中的结果造成影响,难以避免导致 BUG 的产生。在手动测试的情况下,需要回归测试整个页面的所有功能点,而用 Selenium 如何保证页面的稳定呢?

二、Selenium 安装

Selenium 支持多种语言,Python 最受欢迎,安装也比较简单:

然后需要根据链接下载 ChromeDriver 到 /usr/local/bin。

执行以下代码检测你的环境已经安装完毕:

如果程序能正常打开你的 Chrome 浏览器,输入 Selenium 并搜索,则说明 Selenium 安装成功。

三、Selenium 定位页面元素

WebDriver 提供了一系列的对象定位方法,常用的有 id, name, class name, link text, partial link text, tag name, xpath, css selector,针对百度的网页可以有一下多种方法定位页面元素。

四、测试登录

因为滴滴云控制台部分页面需登录后方可打开,所以测试的第一步打开首页,填入用户名密码。

检查程序可以打开滴滴云控制台首页,并成功登录 DashBoard 页,则登录验证成功。

五、测试默认项选中

本次自动化测试的目的为检测从官网跳转到控制台时,进入 https://app.didiyun.com/#/dc2/add?srvType=ebs&systemDiskType=HE&zoneId=gz01 页,查看能否默认选中广州一区,标准云服务器,系统盘为高效云盘。

如果有如下输出,则测试失败,需要我们手动进入对应页面查看默认选中项的情况:

如果有如下输出,则通过测试:

六、后记

我们知道,Selenium 是一个很优秀的 Web 框架,提供了很丰富的 API,使用它结合进行做 Web 的自动化测试真的很完美。

但是在实际的情况中,理想与现实总是存在那么一点距离,这点距离主要是难维护,难维护的最核心是页面元素经常改变,测试过程中数据很多,不知道怎么进行维护,页面元素确实经常改变,很难改变。另外一个就是数据问题,比如我们验证 N 个表单在不同输入情况下的提示信息,会有不同的提示信息,都得需要验证。

本文为减少重复劳动而对自动化测试所做的一个探索,专业的自动化测试肯定会封装的更加易用,可读,可维护。断言,日志都会用更加专业的框架。

期待自动化测试可以为滴滴云的稳定性出一份力。

七、参考链接

Selenium 官网:https://www.seleniumhq.org

本文作者:杜宽

您的留言将激励我们越做越好