目录
自动化测试
- 什么是自动化测试
- 有程序代替人工进行系统校验的过程
- 自动化测试能解决的问题
- 回个测试(冒烟测试
- 对之前的功能进行测试,通过自动化的代码来实现
- 针对上个版本的问题回归
- 兼容性测试
- web实例化不同的浏览器驱动,想防御对不同的浏览器进行操作,解决浏览器的兼容性问题
- 性能测试
- 通过工具来模拟多个用户实现并发操作
- 提高工作效率,保障品质质量
- 回个测试(冒烟测试
- 自动化测试的优点
- 能在较少的时间内执行更多的测试用例
- 能够减少人为的错误
- 能够克服手工的局限性
- 脚本可以重复执行
- 误区
- 自动化可以完全代替手工测试
- 自动化一定比手工厉害
- 自动化可以发现更多的bug
- 自动化适用于所有功能
- 自动化测试的分类
- web自动化
- 移动app自动化
- 接口自动化
- 用来给web或者app前端传输数据用的
- 单元测试-自动化
- 针对开发的代码进行测试,一般由开发自己操作
- 安全测试(渗透测试)
- 针对系统、数据、应用等安全性方面进行测试
- 桌面应用自动化测试
- 针对Windows的桌面应用程序进行自动化测试
- 嵌入式设备自动化测试
- 针对嵌入式设备的应用程序进行自动化测试
- UI自动化测试
- 通过对web应用及app应用进行自动化测试的过程
- 什么项目合适做ui自动化
- 需求变动不频繁
- 项目周期长
- 项目需要回归测试
- UI自动化在什么阶段开始
- 手工测试完成之后才进行自动化测试
- 通过手工测试能够清除知道自动化的步骤以及结果
- 手工测试完成之后才进行自动化测试
- UI自动化测试所属分类
- 黑盒测试(功能测试)
- UI自动化是模拟人工对web以及app页面操作的过程
- 白盒测试(单元测试
- 灰盒测试(接口测试
- 黑盒测试(功能测试)
情景:
1.V1 通过手工测试完成之后,有是个功能
2.针对V1版本的 10个功能,进行自动化的代码编写
3.V2增加了十个功能(现在共20个功能)
4.V2版本的测试过程中,新增的10个功能手工测试
5.针对老的10个功能就可以通过自动化进行回归测试
web自动化框架
- QTP
- 由惠普公司开发的一款自动化工具,支持web、桌面的自动化测试。收费的商用工具。
- selenium
- 主要用来做web自动化测试的,开源的免费的工具
- root framework
- 自动化测试平台,通过他可以实现web自动化测试、接口自动化测试、桌面的自动化测试。
selenium特段
selenium中文名是硒,用来做web自动化测试的
[səˈliːniəm] 涩力念
https://www.selenium.dev/documentation/zh-cn/guidelines_and_recommendations/page_object_models/
- 开源软件
- 跨平台 平台指操作系统
- 支持多种浏览器 firefox、chrome、ie、edge、opera、safari
- 支持多语言:python、java、c#、js、php
- 成熟稳定功能强大:北大公司使用,Google、华为、百度、腾讯
selenium发展史
-
selenium1.0
-
selenium IDE
- 是firefox的一款插件,通过它可以记录用户的操作并生成对应的自动化脚本
-
selenium grid
-
分布式的集成环境
通过gtrd可以将测试脚本下发到不同的电脑用不同的浏览器来执行
-
-
selenium RC
- 由js封装的工具,用来对浏览器进行操作的。
-
-
selenium2.0
- selenium 1.0 + webdriver
- 针对浏览器的操作都是铜鼓webdriver实现的
- 支持的语言更多
-
selenium3.0
- 删除了selenium RC
- 全名支持java8
- 支持macOS,支持safari浏览器
- 支持微软最新的EDGE浏览器,支持更多的浏览器
webdriver:浏览器驱动器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uiqdtrk7-1624374306312)(G:\learn\测试\自动化测试\selenium工作原理.bmp)]
selenium工具包安装
- python开发工具安装
- 浏览器安装
- 需要注意浏览器与浏览器的驱动版本,不同浏览器有不同的浏览器驱动
- 不同版本也有不同的驱动
- selenium工具包安装
- 在线安装方式
- pip install selenium
- 离线安装
- pycharm进行安装
- 在线安装方式
浏览器驱动安装
- 查看浏览器版本
- 下载驱动
- http://chromedriver.storage.googleapis.com/index.html
- 解压浏览器驱动文件,将驱动文件复制到python的根目录
- python\scripts 内
入门创建示例
- 项目名称不要使用第三方模块名
'''
selenium 学习
1.导入selenium
2.实例化浏览器驱动对象
3.打开百度网站
4.等待3S(代表业务操作
5.退出浏览器驱动(释放系统资源)
'''
import time
from selenium import webdriver
# 创建谷歌浏览器驱动对象,首字母大写需要加()
# 可以实例化多个浏览器驱动对象
# driver = webdriver.Firefox()
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(3000)
# 退出浏览器驱动(释放系统资源
driver.quit()
元素定位
-
如何进行元素定位
- HTML元素:标签头+内容+标签尾
- 元素的信息来定位元素
- 标签名及元素的属性
- 元素的层级结构来定位元素的
- 互相嵌套的层级结构
-
selenium元素定位的方法
- id:元素必须有ID属性
- find_element_by_id(IdName)
- name
- find_element_by_name(Name)
- class_name
- find_element_by_class_name(ClassName)
- 选取其中一个class即可
- tag_name
- 通过元素的标签名称定位
- 重复元素,默认定位第一个
- 不建议使用
- find_element_by_tag_name(TagName)
- link_text
- 通过超链接的全部文本信息进行元素定位,主要用来定位a标签
- find_element_by_link_text(LinkText)
- partail_link_text
- 通过超链接的局部文本信息进行元素定位
- find_element_by_link_text(Partail)
- xpath
- 页面中有一些元素,无法通过元素的信息精准的定位需要借助xpatn和css
- css
- id:元素必须有ID属性
-
定位一组元素的方法
- find_elements_by_id(id)
- 区别:element 多了一个s
- 返回的值是一个列表
- 可以通过下标[0]来使用列表的元素
- find_elements_by_id(id)
import time
from selenium import webdriver
# 实例化对象
driver = webdriver.Chrome()
driver.get("https://www.jianshu.com/sign_in")
# 点击注册按钮
driver.find_element_by_link_text("注册").click()
time.sleep(1)
# 返回list形式的数据
input_list = driver.find_elements_by_tag_name("input")
input_list[2].send_keys("自动输入名字")
time.sleep(1)
input_list[4].send_keys(15968164740)
time.sleep(1)
driver.close()
XPath(推荐使用
- XML Path 的简称,在XML文档中查找元素信息的语言
- HTML可