1、前言

我大概是在2012年第一次正式接触到自动化测试,那个时候跟随我的团队一起,就当时项目的UI自动化尝试做出了探索。
在我离开那家公司的时候,我们的自动化测试体系仍然难言完美,但是也已经达到了非常高效的程度。我们的测试部门从业务向的纯手工测试团队,也转型为了自动化:手动=2:1的队伍结构。
时至今日,自动化测试的火热程度比起当年又要上升了几个层级,对于测试工程师而言,掌握自动化测试的技术和思路,无疑是个人重要的技术性向道路。因此我准备花一定的篇幅,从新从头开始对于java+selenium3这套自动化体系进行一些记录和解析,算是对相关技术的一个自我沉淀。也希望能对新接触此领域的朋友提供一些指引和帮助。

2、自动化体系的小简介

请允许我花小小的篇幅来介绍现在市场上主流的自动化测试体系。
抛开“广义”的自动化不说,现今的测试自动化方向主要集中在“UI”层和“API”层,也即所谓的UI自动化和接口自动化,如下图所示:

UI自动化的优势在于:

  • 通过模拟用户操作实现测试
  • 贴近产品和业务,方便验证和验收

其劣势(主要是对比API自动化):

  • 代码量大,维护工作量大
  • 容易受到变更的影响

尤其是这第一点,导致UI自动化被一些人员和企业所诟病,甚至引发一系列争议。
但是实际项目中,并不存在UI自动化是鸡肋的说法,有相当多的项目仍然选择采用UI自动化的方式提升测试效率。我们这一系列文章就预计做UI自动化的一个总集,至于API自动化后续可能会同样做一个汇总。

写这一段的目的在于,对于自动化领域的新手而言,UI自动化绝对是你不能不会的一块技术,也可以说是起步。

3、环境搭建

开始实现基于java+selenium的UI自动化,第一步就是搭建环境,我们需要以下东西:

  • JDK:写java代码当然要有java development kit
  • Eclipse:java继承编程环境
  • Selenium:UI自动化的主心骨
  • 各类浏览器driver:Selenium3时代,浏览器与自动化之间的桥梁。

后续我们可能还要加入诸如testNG,maven等部件和框架,这个可以后续需要在做。要写出初步的自动化代码并调试成功,只需要上述四个东西就可以了。

3.1 JDK

推荐到Oracle官网下载:
https://www.oracle.com/technetwork/java/javase/downloads/index.html

安装配置过程网上有大量教程,这里不再赘述。

3.2 Eclipse

同样推荐至Eclipse官网下载:
https://www.eclipse.org/downloads/

装好了JDK的话,eclipse的安装应该没有任何问题。

3.3 Selenium

如果使用maven管理的话,类似selenium及其它可能需要类库都可以使用maven进行管理和下载。出于学习的目的,这里我们暂时不使用maven管理,而是手动去下载他。
推荐去到selenium官网进行下载,地址是:https://www.seleniumhq.org/download/

可以选择下载历史版本或者最新版本:

4. 浏览器driver

去到 https://www.seleniumhq.org/download/
下翻到浏览器驱动下载区域,选择需要测试的浏览器的对应驱动:
(本文会涉及到Firefox及Chrome,所以需要下图红色箭头所指两个驱动)

5. 备选下载地址

如果以上下载遇到问题,可以到以下网盘中获取相关资源:

链接:https://pan.baidu.com/s/1yWZg22kQJQ0z_G8tJJnjXA
提取码:d19c

4. 项目配置

打开eclipse,新建一个java project,命名为seleniumTest,其他选项保持默认完成。
新建一个文件夹lib,用来放置我们需要的类库,建好以后将前序下载的selenium jar包使用拷贝过去,F5刷新项目:

另建一个文件夹tools,用来放置浏览器驱动文件,操作同样如上:

右键项目,选择build path - configure build path - Libraries - Add Jars,选择lib文件夹下面的selenium jar包。

完成以后,初步的java + selenium环境就搭建完毕了。

下一篇来写第一个selenium代码,启动浏览器


软件测试交流群:717380210
有软件测试,自动化测试,安全测试相关问题需要交流探讨的小伙伴,欢迎加入!

最新文章

  1. CommonJS 模块规范 1.1.1
  2. webpack常用的插件安装命令
  3. 如何让div水平垂直居中
  4. ubuntu 14.04 64位系统编译RT288x_SDK
  5. android studio 预览保持,因为是SDK版本过高,可以点击小图标机器人修改SDK版本号。
  6. ASCII,Unicode和UTF-8
  7. android 管理Bitmap内存 - 开发文档翻译
  8. hdu 4620 Fruit Ninja Extreme(状压+dfs剪枝)
  9. python 二进制转换
  10. CSRF攻击原理及防御
  11. shell练习题7
  12. python之路——21
  13. php redis 操作
  14. K8S集群 NOT READY的解决办法 1.13 错误信息:cni config uninitialized
  15. (二维数组 亿进制 或 滚动数组) Hat's Fibonacci hdu1250
  16. 开发常用镜像资源替换为国内开源镜像(yum,compose,maven,docker,android sdk,npm,国内开源镜像汇总)
  17. iOS 生成pem证书
  18. Navicat for MySQL和Navicat Premium之间的区别
  19. TODO的用法
  20. vuex的初始化

热门文章

  1. Oracle数据库---包
  2. python连接greenplum_postgresql
  3. 【题解】长度为素数的路径个数-C++
  4. 简单的量子算法(一):Hadamard 变换、Parity Problem
  5. SpringBoot热部署报错(BeanCreationException: Error creating bean with name 'classPathFileSystemWatcher' d)
  6. 【HDOJ】2007平方和与立方和
  7. linux初学者-文件权限
  8. 解决Vuex持久化插件-在F5刷新页面后数据不见的问题
  9. windows上使用pip下载东西时报编码错误问题解决方法
  10. jumpserver1.4.1 安装过程