selenium发展及原理、环境部署
文章目录
前言
随着时间的推移,软件增加的新功能会越来越多,脚本规模越来越大,执行人工测试的时间越来越长。对于人工测试的依赖开始变得棘手,因此,开发人员开始寻找替代方案,自动化 UI 测试开始被注意,这会用自动化框架代替人工继续运行相同的回归测试脚本,本文就介绍了selenium发展及原理、环境部署。
一、自动化测试概述
(一)生活中的自动化
-
什么是自动化?
- 由机器设备代替认为自动完成指定目标的过程
- 生活中的自动化:
链接: link
-
自动化趋势
- 减少人力劳动
- 提高工作效率:
- 产品规格统一标准
- 规模化(批量生产)
(二)软件中的自动化
- 什么是自动化?
- 让工具、程序(代码)代替人为去验证程序功能的过程
- 为什么做自动化
- 解决回归测试(新版本正式测试之前的问题回归以及周边功能的验证)-冒烟测试(主干测试)
- 解决压力测试(多用户操作软件,统计软件服务器处理多用户请求的能力)-天猫双11处理业务的峰值
- 解决兼容性测试(兼容不同的软件环境,如浏览器、操作系统,分辨率等)
- 提高测试效率,保证产品质量
(三)自动化测试相关知识
-
自动化测试什么阶段开始?
- 功能测试稳定的版本 (手工测试) -->》 web UI自动化
-
自动化测试所属分类?
- 黑盒测试(功能测试-web UI自动化测试) --系统测试
- 灰盒测试(接口测试接口自动化测试) --集成测试
- 白盒测试(单元测试) -单元测试 unittest
- java --junit
- 测试按照阶段划分:单元测试-白盒测试、集成测试接口测试、系统测试- ( 黑盒、功能UI、兼容、压力)、验收测试
(四)自动化测试优缺点及误区
- 优点
- 较少的时间内运行更多的测试用例
- 自动化脚本可重复运行
- 较少人为的错误
- 测试数据存储 --数据驱动
- 缺点
- 不能取代手工测试
- 手工测试比自动化测试发现的缺陷更多
- 测试人员技能要求高
- 误区
- 自动化测试完全替代手工测试
- 自动化测试一定比手工测试厉害
- 自动化可以发现更多bug
(五)自动化测试分类
- web -(UI)自动化测试—》B/S
- 移动(App)-UI自动化猜测是–》手机上的应用
- 接口-自动化测试
- 性能-自动化测试
- 单元-自动化测试
(六)自动化工具介绍
- QTP(收费)
- QTP是商业的功能测试工具,收费,支持、桌面(c/s)自动化测试–VBS
- Selenium(开源)
- Selenium是开源的web软件,免费,主要做功能测试
- Appium
- Appium是开源的App自动化测试工具,免费,主要做App项目(Android,IOS都支持)
- Jmeter(开源、、接口、性能)
- Jmeter是由Apache公司使用java语言开发的一款测试工具,支持web、接口、性能测试
- LoadRunner
- LoadRunner是商业性能测试工具,收费,功能强大,适合做复杂场景的性能测试
- Robot Framework
- RobotFramework是一个基于Python可扩展的(关键字驱动)的测试自动化的框架
(七)主流工具
- web自动化测试:Selenium、Robot Framework、Airtest 、QTP
- App自动化测试:Appium、MonkeyRunner、UIautomation、Airtest
- PC(C/s)客户端自动化测试:
- 接口自动化测试: Jmeter、 Postman、 HttpUnit、 RestClient 、
Python+requests - 云测平台: Testin、 Testbird —兼容性测试
- 性能测试: Jmeter、LoadRunner-HP
二、 Selenium介绍
(一)什么是Selenium
- 概念:
- Selenium是一个用于Web应用程序测试的框架;中文意思(硒)
- B/S架构 browser 浏览器 C/S架构client 客户端安装好客户端
- Selenium 特点: API(接口)
- 开源软件:源代码开放,可以根据需要来增加工具的某些功能;
- 跨平台: Linux、 Windows、MacOS
- 核心功能:就是可以在多个浏览器上进行自动化测试,Chrome,Firefox,lE,Safari,opear
- 多语言: java、 python、C#、JavaScript、Ruby等
- 成熟稳定:目前已被google、百度、腾讯等公司广泛使用
- 功能强大:能够实现类似商业工具的大部分功能,因为开源,可实现定制化功能。
- 配置: Java+ Selenium
- 配置:Python+Selenium
(二)Selenium发展史
- 用简单的公式表示为:
-
Selenium 1.0 = Selenium IDE + Selenium Grid + Selenium RC
-
Selenium 2.0 = Selenium 1.0 + WebDriver
-
Selenium 3.0 = Selenium 2.0 - Selenium RC(Remote Control)
这里附上“虫师”的博客链接
: ‘请点击这里’
-
三、Selenium+WebDriver环境搭建
(一)什么是WebDriver
- WebDriver是一种用于web应用程序的自动化测试工具
- 它提供了一 套友好的API;
- WebDriver完全就是一 套类库, 不依赖与任何测试框架,除了必要的浏览器驱动;
- 说明:
- API:应用程序接口说明
- webDriver类库内封装非常多的方法,需要使用这些方法,就需要友好的调用命名规则
链接: 点击阅读API文档手册
(二)WebDriver支持的浏览器&语言
- 浏览器
- FireFox(geckodriver)
- Chrome(ChromeDriver)
- IE(InternetExploreDriver)
- Opera(OpearDriver)
- Safari(SafariDriver)
- 浏览器优缺点
- Firefox, Chrome:对元素定位和操作具有良好的支持,同时对JavaScript支持也非常好
- IE:只能在Windows平台运行,运行速度慢
- 语言
- Python
- Java
- PHP
- JavaScript
- C#
- Perl
- Ruby
- 语言优缺点
- Python:易学、操作简单、流行趋势
- web自动化测试环境:
- Python --Python运行的环境
- IDE --pycharm pycharm安装和配置
- 浏览器 --Chrome/firefox --安装好浏览器
- 对应浏览器的驱动应用 --chrome驱动/firefox驱动
- Selenium
(三)Selenium环境搭建
- 具体操作参考附件安装Selenium.docx
(四)Selenium WebDriver工作原理
- 乘客打车时的操作:
- 告诉出租车司机去哪里,大概怎么走
- 出租车司机:按照乘客的要求来操控出租车
- 出租车:出租车按照司机的操控完成真正的行驶,把乘客送到目的地
- 在WebDriver中也有类似的三个角色:
- 工程师:写自动化测试代码发送请求给浏览器的驱动(比如火狐驱动)
- 浏览器驱动:解析这些自动化测试的代码,解析后把它们发送给浏览器
- 浏览器: 执行浏览器驱动发来的指令,并最终完成工程师想要的操作。
- 从技术上解释下WebDriver的工作原理:
- WebDriver API ( 基于Java、Python、C#等语言),对于java语言 来说,就是下载下来的Selenium的Jar包,比如Selenium-java-3.8.1 .zip包,代表Selenium3.8.1 的版本
- 浏览器的驱动( browser driver),每个浏览器都有自己的驱动,均以exe文件形式存在(比如谷歌的chromedriver.exe、火狐的geckodriver.exe 、IE的IEDriverServer.exe)
- 浏览器,浏览器当然就是我们很熟悉的常用的各种浏览器(IE、 Firefox、 Chrome)
四、Python+Selenium实操
(一)操作浏览器的基本方法
场景:Python调用webdriver框架中的API,对浏览器做一些常规的操作,比如打开、前进、后退、刷新、截屏、退出等操作
- 实例对象,打开浏览器
- 打开网页:get(url)
- 刷新:refresh()
- 前进:forward()
- 后退:back()
- 截屏:get_screenshot_as_file(保存路径)
- 退出:close(),quit()
from selenium import webdriver
import time
#1:实例对象,打开浏览器
driver = webdriver.Chrome()
#2:打开网页
driver.get('https://www.baidu.com')
#3:刷新
time.sleep(2)
driver.refresh()
#4:前进,后退
driver.get('https://www.jd.com')
time.sleep(1)
driver.back() #后退
time.sleep(1)
driver.forward() #前进
time.sleep(1)
#5:截屏
driver.get_screenshot_as_file('jd.png')
#6:退出
driver.quit()
总结
就酱紫啦