本文大纲截图:
目录
一、自动化测试介绍
1、基本介绍
1.1 自动化
概念: 由机器设备代替人工自动完成指定目标的过程
优点:
-
1)减少人工劳动力
-
2)提高工作效率
-
3)产品规格统一标准
-
4)规模化(批量生产)
1.2 自动化测试
软件测试:校验系统是否满足规定的需求、弄清预期结果与实际结果之间的差别
软件自动化测试:让程序代替人工去验证系统功能的过程
应用场景:
-
回归测试:项目在发新版本之后对项目之前的功能进行验证
-
压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力
-
兼容性测试:不同浏览器(IE、Firefox、Chrome)等等
优点:
-
1)较少的时间内运行更多的测试用例;
-
2)自动化脚本可重复运行;
-
3)减少人为的错误;
-
4)克服手工测试的局限性;
-
5)提高测试效率,保证产品质量
误区:
-
1)自动化测试可以完全替代手工测试;
-
2)自动化测试一定比手工测试厉害;
-
3)自动化测试可以发掘更多的BUG;
-
4)自动化测试适用于所有功能
分类:UI自动化、接口自动化、性能测试、单元测试
UI自动化:Web端、移动端
Web端:
- 什么Web项目适合做自动化测试?
-
1.需求变动不频繁
-
2.项目周期长
-
3.项目需要回归测试
-
- Web自动化测试在什么阶段开始?
-
功能测试完毕(手工测试)
-
- Web自动化测试所属分类——黑盒测试(功能测试)
-
1)黑盒测试(功能测试)
-
2)白盒测试(单元测试)
-
3)灰盒测试(接口测试)
-
移动端:APP应用、小程序、H5页面
2、环境搭建
UI自动化基本环境包括:
-
Java JDK 环境
-
Python和PyCharm安装
-
Selenium WebDriver、浏览器驱动、UnitTest、Pytest、parameterized、json、Selenium Grid
-
MySQL
3、测试工具
-
QTP
是一个商业化的功能测试工具,收费,支持web,桌面自动化测试 -
Selenium
是一个开源的web自动化测试工具,免费,主要做功能测试 -
Robot Framework
是一个基于Python可扩展地关键字驱动的测试自动化框架
4、测试流程
-
1)整理需要进行自动化测试的用例
-
2)搭建好自动化测试框架环境
-
3)编写自动化测试用例脚本
-
4)执行自动化测试用例脚本
-
5)生成自动化测试报告
5、测试框架
-
Python + Selenium + UnitTest + 数据驱动 + 日志收集
-
PO 模式
:封装思想
6、基本代码(假定的概念)
Web 自动化基本代码
""" Web 自动化基本代码 """
# 1、导入模块
from selenium import webdriver
from time import sleep
# 2、实例化浏览器对象:类名()
# 实例化谷歌浏览器对象
# driver = webdriver.Chrome()
# 实例化火狐浏览器对象
driver = webdriver.Firefox()
# 3、打开网页:必须包含协议头
driver.get('http://www.baidu.com')
# 4、观察效果
sleep(6)
# 5、关闭页面
driver.close()
二、Selenium工具
1、基本介绍
Selenium 是一个用于Web
应用程序的自动化测试工具。
特点:
-
开源:源代码开放可以根据需要来增加工具的某些功能
-
跨平台:linux、windows、mac
-
支持多语言:Python、Java、C#、JavaScript、Ruby、PHP等
-
支持常见的浏览器:Firefox、Chrome、IE、Edge、Opera、Safari等
-
成熟稳定
-
功能强大
发展史:
Selenium 1.0:
组件:Selenium IDE
、Selenium Grid
、Selenium RC[核心组件]
- Selenium IDE
-
1)Firefox浏览器插件,可以录制用户的基本操作,生成测试用例
-
2)测试用例可以在Firefox浏览器里回放
-
3)测试用例可以转化成其它语言的自动化测试脚本
-
- Selenium Grid
-
允许 Selenium RC 针对规模庞大的测试案例集成;
-
需要在不同环境中进行的测试案例集进行扩展
-
- Selenium RC[核心组件]
-
1)RC是 Remote Control 的缩写,它的功能就是用来模拟一个浏览器
-
2)支持多平台、多浏览器及多种开发语言来编写测试用例
-
- 缺点:
-
1)不支持本机键盘和鼠标事件
-
2)不支持同源策略XSS/HTTP(S)
-
3)不支持弹出框,对话框(自签名证书和文件的上传、下载)
-
Selenium 2.0:
- 组件:
Selenium 1.0
+WebDriver[核心组件]
-
注意:2.0 是过渡版本,主要是使用 WebDriver 替换 RC
-
- 特点:
-
1)基于调用 WebDriver API 来模拟用户操作
-
2)WebDriver 的速度更快,因为它可以直接交互使用
-
3)支持多种编程语言
-
Selenium 3.0:
组件:Selenium IDE
、Selenium Grid
、WebDriver[核心组件]
Selenium IDE:
-
作用:负责录制、回放脚本,模拟用户对页面的真实操作
-
安装:作为浏览器插件安装
-
Chrome插件扩展下载网址:
https://www.extfans.com/
Selenium Grid:
-
作用:用于分布式自动化测试,通过控制多台机器、多个浏览器并行执行测试用例,在测试用例比较多的情况下比较实用。
- 安装:
-
1)安装java的jre环境并配置环境变量(配置JDK运行环境)
-
2)在不同的测试集群机上,分别安装不同类型的浏览器和相应的驱动。并配置好环境变量(将浏览器驱动driver配置进PATH变量中)
-
3)jar包下载:
selenium-server-standalone-XX.XX.jar
下载。在https://selenium-release.storage.googleapis.com/index.html
找到适配的版本(与Python中安装selenium版本一致)并将其放到电脑的某一个目录下。
-
WebDriver[核心组件]:
-
作用:提供 API 来操作浏览器,如:Chrome、FireFox、IE 等
- 安装:
-
1)安装 Python 环境(以及PyCharm编辑器<一种
Python IDE
(Integrated Development Environment
,集成开发环境>) -
2)安装命令:
pip install selenium
-
-
使用:在Python中调用来写测试脚本,去操作Web端网页应用
-
注意:3.0 版本下所有浏览器除了需要安装 Selenium 框架 以外,还需要安装对应的驱动程序
特点:
-
1)去掉了对 Selenium RC 的支持
-
2)全面支持 Java8
-
3)支持macOS(Sierra or later),支持官方的 SafariDriver
-
4)通过软件的 WebDriver Server,支持Edge浏览器
-
5)支持IE9.0以上版本
-
6)通过火狐官方的GeckoDriver来支持Firefox
2、环境安装
2.1 Python3 已安装
pip是一个通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能。
2.2 安装 selenium
-
安装命令:
pip install selenium
-
卸载命令:
pip uninstall selenium
-
查看命令:
pip show selenium
2.3 安装浏览器驱动
下载浏览器驱动:
-
各个驱动下载地址:
http://www.seleniumhq.org/download/
-
注意:浏览器的版本和驱动版本要一致!
火狐浏览器:
- 1)Firefox 48 以上版本:selenium 3.x + Firefox驱动(geckodriver)
-
火狐驱动下载地址:
https://github.com/mozilla/geckodriver/releases
-
-
2)Firefox 48 以下版本:selenium 2.x + 内置驱动
谷歌浏览器:
-
selenium 2.x/3.x + Chrome驱动(chromedriver)
-
谷歌驱动下载地址:
https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge浏览器(了解):
-
selenium 3.x + Edge驱动(MicrosoftWebDriver)
-
Edge驱动下载地址:
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
环境变量配置: 把驱动文件所在目录添加到Path环境变量
中或者直接放到Python安装目录
,因为Python已添加到Path中。
3、工作原理
-
1)运行用python写好的selenium脚本,向
web service
中发送一个http请求; -
2)浏览器驱动中的
web service
会根据这个请求生成对应的js脚本
。注意:相同的操作生成的js脚本在不同浏览器中会有所不同,因此不同的浏览器要有不同的驱动; -
3)js脚本驱动浏览器,完成selenium脚本中的各种操作,并返回给
web service
; -
4)
web service
将结果通过http响应的形式返回给客户端。
4、基本代码
# 导包
from selenium import webdriver
import time
# 创建浏览器驱动对象
# Chrome浏览器:
driver = webdriver.Chrome()
# Firefox浏览器:
driver = webdriver.Firefox()
# Edge浏览器:
driver = webdriver.Edge()
# 打开Web页面
driver.get("http://www.baidu.com")
# 暂停
time.sleep(3)
# 关闭驱动对象
driver.quite()
5、Selenium API
5.1 元素定位
元素定位方法
-
方法一:
# 导包
from selenium import webdriver
#定位一个元素
# driver.find_element_by_xxx()
driver.find_element_by_id()
driver.find_element_by_name()
driver.find_element_by_class_name()
driver.find_element_by_tag_name()
driver.find_element_by_link_text()
driver.find_element_by_partial_link_text()
driver.find_element_by_xpath()
driver.find_element_by_css_selector()
# 定位一组元素
# driver.find_elements_by_xxx()
driver.find_elements_by_id()
driver.find_elements_by_name()
driver.find_elements_by_class_name()
driver.find_elements_by_tag_name()
driver.find_elements_by_link_text()
driver.find_elements_by_partial_link_text()
driver.find_eleme