password
查看人数
type
status
date
slug
summary
category
icon
tags
作者
状态
【基于UI的自动化测试开发 在实际项目中合适的介入场景/条件是什么?】
一。 项目背景方面
- 项目生命周期较长(软件有稳定的客户需求,升级或客户定制版本不断的推出); 并且被测软件有较多或繁琐业务流程等 在每轮迭代中 需要反复测试操作。
- 被测软件本身需求、界面设计、业务流程/功能 基本稳定, 选择要开发为脚本的功能或业务部分已经没有重大的bug
二。技术方面
1. 能找到适合于本项目技术特点的 自动开发工具。
工具选择原则:团队成员掌握工具所需的基本技能、工具本身基本成熟且有维护支持、工具使用成本能承受(开源)
- 开发的配合,能提供界面设计方面的协助。
【基于selenium工具自动化的基本原理】
- 通过webDriver(浏览器驱动程序) 间接控制浏览器的动作。
- selenium包提供的 主要是 webdriver的API(应用程序编程接口)
【准备好对应selenium工具体系的环境】
- 浏览器 品牌和版本
- 对应webdriver 品牌和版本
- selenium库 确定某一版本(3.141.0) (下载指定开发语言对应的版本)
- 开发语言常见 python java javascript C#
- selenium IDE 录制并生成脚本的工具 (它是firefox浏览器的插件)
- 用图像识别方式 定位非HTML页面元素时 采用的sikuly(java)工具。以及 python 调用java程序的桥梁--- "JPype1"
- 生成测试报告的 HTML测试执行器 (第3方模块) 【编码工具】 eclipse+JDK+pydev +(eclipse的svn插件) 或 Pycharm(要对应操作系统平台)
【可能的辅助工具】
【selenium 基本功能】
selenium中最重要的实例(对象)
1) webdriver实例, 怎么得到 ---> “实例化对应浏览器的webdriver类”得到。
先导入webdriver模块, 再使用webdriver中某一个浏览器的webderiver类 完成实例化
例如:
driver = webdriver.Chrome()
创建好实例后, 才能通过该driver实例 调用各种操作浏览器的方法
2)webElement实例。 它是怎么得到的?
通过
driver.find_element()
方法执行后 得到的返回值
driver.find_element(By.??, “value”).click()
或3). actionChains实例 (模拟鼠标或键盘动作), 该实例怎样得到?
导入该类
ac = ActionChain(driver) # 通过driver 实例化得到
执行模拟动作的模式: 安排动作->安排动作->安排动作。。->统一执行动作
例1 :
ac.move_to_element().click().send_keys().perform()
例2: "在商品管理模块的商品信息编辑中,输入商品详细描述信息"
4) 特殊元素定位警告弹窗操作
alert实例, 该实例怎样得到的? 通过driver.switch_to.alert 返回得到的
- 切换新窗口
- 嵌入子页面窗口切换 用ID 或者name
- 用例收集
2.【driver对象的常用方法】
1) get()
2) quit()
3) find_element()
find_elements() # 该方法如果未找到任何元素不会报错,返回空列表
4) switch_to
5) implicitly_wait(秒数) # 隐式元素识别的智能等待
3.【find_element方法的几种方式】
id、name、classname
tagname
link_text、 partial_link_text
xpath
css_selector
xpath 可以同时从 标签的名称、属性、文本值、层次关系4个维度定位, 准确度高且灵活。
xpath基本语法格式: //步/步/.../
每一步的通式: 标签名[修饰方式]
索引 整数值从1开始
@属性=‘值’
text()=‘值’
/../../ 在xpath中可以用两点 表示上一层标签
// 表示不定子层。 例如 table//td 表示table标签下无论哪一层的td 都匹配
css和xpath语法相似
标签名[属性修饰]>标签名[属性修饰]
其中id属性和class属性 不需要写在方括号中
id属性用 # 号
class属性用 . 号
css的特点, 部分只能通过元素样式 定位的场景 只有通过css selector方式实现
例如:
input:checked 表示定位被选中的单选框或复选框
【Python单元测试框架 unittest】
- 导入包 import unittest
- 通常用4要素方式来理解unittest
2.1) 测试固定动作
2.2) 测试方法
这两个要点 都是写在测试类中。
定义测试类的要求:
2.3) 测试集 unittest.TestSuite类, 实例化该类 可以创建收集测试方法的"容器"
- 给测试集"容器" 中增加测试方法2种方式:
1: 是一个测试加载器的discover方法 自动收集指定包下面的符合匹配标准的 测试模块中的测试方法
2: 手动实例化测试类中的方法,然后加入测试集容器
假设有测试类为:
2.4) 测试执行器:
1.unittest自带的 TextTestRunner类
2. 第三方的 HTMLTestRunner类, 它在HTMLTestRunner.py 模块中实例化测试执行器类后, 调用实例的run方法 把测试收集好测试方法的 测试集传递给run方法执行
selenium 简单示例
开启无头浏览器访问
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:躁静有徒
- 链接:https://blog.zaojingyoutu.top//article/96bf5fb0-9a54-4095-928d-01f9137dfed4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。