注:开始学习selenium自动化,这篇是基于观看b站百里讲的selenium课程,进行的总结,这里记录大概内容,细节用xmind记录总结
一、web自动化简介
1.哪些适合做web自动化
- 软件需求变更不频繁
- 项目周期比较长
- 自动化脚本能够重复利用
2.自动化测试介入点
- 系统测试-回归测试
3.自动化测试项目的实施过程
- 可行性分析——>框架选择(selenium,RF)——>需求分析——>计划——>测试用例设计——>无人值守(和jenkins集成)——>提交报告——>脚本维护
二、环境搭建python+selenium
略过。。。
mac安装Chromedriver,参考:https://www.jianshu.com/p/a9df5135a3a3
三、八大元素定位
面试题:如果元素定位不到,你是怎么去分析的?
- 元素没有加载完成
- Frame中
- 元素不可用、不可读、不可见
- 动态属性,动态的DIV层
前提:需要定位的元素或它的属性必须要唯一
八大元素如下:
- id
- name
- class_name
- xpath
- css
- tag_name
- link_text
- partail_link_text
使用场景:有id、name的先用id和name,如果是超链接的话link_text和partail_link_text,如果也不是超链接,用xpath,css,class_name和tag_name基本上不用,因为它们很难保证唯一性
四、项目实战
(这里熟悉下unitest)
unitest使用方式:
- 新建一个类继承unitest.TestCase
- 导入unitest
- 写一个test开头的方法
main方法根本没有运行,是画蛇添足
能否运行取决于右上角的运行环境
4.1unitest运行测试用例的一个很大的坑:
1.命令行方式——不需要考虑环境
python -m unittest 模块名.py # 执行整个模块
python -m unittest utils.test_case.TestCase.test_02_login # 运行指定方法
2.main方式
建议要和用例写在同一个文件
必选要配置环境
3.建立一个all.py文件
import unittest
from HTMLTestRunner import HTMLTestRunner
if __name__ == '__main__':
# 执行需要的测试用例 并且生成HMTL格式的自动化测试报告
# 1.使用unittest默认的测试用例加载器去发现test_case目录下-py结尾的所有的测试用例
unittest.defaultTestLoader.discover("./test_case", "*.py")
# 2.生成报告文件
report_file = open("./output/report/reports.html", "wb")
# 3.生成一个HTMLTestRunner运行期对象(必须下载一个HTMLTestRunner.py,放到python的lib目录)
HTMLTestRunner(stream=report_file, title='test', description=None)
4.2如果元素在框架中
- 进入框架
- 在进行操作
# 进入框架
driver.switch_to.frame("menu-frame")
# 点击商品列表
driver.find_element(By.XPATH, "//button[@title='商品列表']").click()
# 出框架
driver.switch_to.default_content()
4.3下拉框相关操作
- 先定位
- 转换成Select对象
- 选中(通过值,通过绝对文本,通过下标)
五、在企业能落地的web自动化框架
- 编程语言:java、python
- 设计模式:POM、关键字驱动模式
- 用例管理:unittest
- 数据驱动:ddt、pytest.mark.parameters()
- 二次封装:excel封装、ini/yaml配置文件封装、数据库封装
- 日志监控:logger日志收集
- 异常处理:try。。except。。
- 持续集成:jenkins
- docker:镜像容器技术
- 分布式运行:Grid
- 前端:html和js
六、DDT+EXCEL数据驱动
1.什么是DDT:data driver test数据驱动测试,可以完美的和unittest结合实现数据驱动
@ddt:装饰类,作用是用于申明当前类使用ddt数据驱动
@data: 装饰函数,作用是给函数传值
@unpack:装饰函数,作用是数据解包
@file_data:装饰函数,作用是直接读yaml、json文件