霍格沃兹测试开发 ceshiren.com
pip 命令来安装 Selenium 库:
pip install selenium
import time
# 导入selenium 包
from selenium import webdriver
# 创建一个 Chromdriver 的实例。Chrome()会从环境变量中寻找浏览器驱动
driver = webdriver.Chrome()
# 打开网址
driver.get("https://ceshiren.com/")
# 强等10s 秒
time.sleep(10)
下载 Selenium IDE CRX 文件 保存在熟悉的位置。
打开 Google Chrome 浏览器。
导航至 扩展程序 ,或从菜单中选择 更多工具 --> 扩展程序。
请确保右上角的 开发者模式 选项已启用。
单击页面左上角的 加载已解压的扩展程序 按钮。
浏览到您保存 CRX 文件的文件夹并选择该文件夹。然后点击 选择文件夹 来安装。
完成安装后,Selenium IDE 图标将出现在 Chrome 的工具栏上。
自动化测试用例 | 作用 | |
---|---|---|
用例标题 | 测试包、文件、类、方法名称 | 用例的唯一标识 |
前提条件 | setup、setup_class(Pytest); BeforeEach、BeforeAll(JUnit) |
测试用例前的准备动作,比如读取数据或者 driver 的初始化 |
用例步骤 | 测试方法内的代码逻辑 | 测试用例具体的步骤行为 |
断言 | assert 实际结果 = 预期结果 | 断言,印证用例是否执行成功 |
后置动作 | teardown、teardown_class(Pytest); @AfterEach、@AfterAll(JUnit) |
脏数据清理、关闭 driver 进程 |
pip install allure-pytest
。详细安装步骤参考:https://ceshiren.com/t/topic/3386
# 环境验证
allure --version
allure-pytest
pip install allure
# linux/mac
> pip list |grep allure
allure-pytest x.xx.x
# windows
> pip list |findstr allure
allure-pytest x.xx.x
--alluredir
参数生成测试报告。# 在测试执行期间收集结果
pytest [测试用例/模块/包] --alluredir=./result/ (—alluredir这个选项 用于指定存储测试结果的路径)
# 生成在线的测试报告
allure serve ./result
# 绝对定位
$("#ember63 > td.main-link.clearfix.topic-list-data > span > span > a")
# 相对定位
$("#ember63 [title='新话题']")
$("css表达式")
$$("css表达式")
类型 | 表达式 |
---|---|
标签 | 标签名 |
类 | .class属性值 |
ID | #id属性值 |
属性 | [属性名='属性值'] |
//在console中的写法
// https://www.baidu.com/
//标签名
$('input')
//.类属性值
$('.s_ipt')
//#id属性值
$('#kw')
//[属性名='属性值']
$('[name="wd"]')
类型 | 格式 |
---|---|
并集 | 元素,元素 |
邻近兄弟(了解即可) | 元素+元素 |
兄弟(了解即可) | 元素1~元素2 |
父子 | 元素>元素 |
后代 | 元素 元素 |
//在console中的写法
//元素,元素
$('.bg,.s_ipt_wr,.new-pmd,.quickdelete-wrap')
//元素>元素
$('#s_kw_wrap>input')
//元素 元素
$('#form input')
//元素+元素,了解即可
$('.soutu-btn+input')
//元素1~元素2,了解即可
$('.soutu-btn~i')
类型 | 格式 |
---|---|
父子关系+顺序 | 元素 元素 |
父子关系+标签类型+顺序 | 元素 元素 |
//:nth-child(n)
$('#form>input:nth-child(2)')
//:nth-of-type(n)
$('#form>input:nth-of-type(1)')
def test_param_login_ok():
# 登录成功
username = "right"
password = "right"
login(username,password)
def test_param_login_fail():
# 登录失败
username = "wrong"
password = "wrong"
login(username,password)
@pytest.mark.parametrize
@pytest.mark.parametrize("username,password",[["right","right"], ["wrong","wrong"]])
def test_param(username,password):
login(username,password)
search_list = ['appium','selenium','pytest']
@pytest.mark.parametrize('name',search_list)
def test_search(name):
assert name in search_list
@pytest.mark.parametrize("test_input,expected",[
("3+5",8),("2+5",7),("7+5",12)
],ids=["3和5相加","2和5相加","7和5相加"])
def test_mark_more(test_input,expected):
assert eval(test_input) == expected
# 创建conftest.py 文件 ,将下面内容添加进去,运行脚本
def pytest_collection_modifyitems(items):
"""
测试用例收集完成时,将收集到的用例名name和用例标识nodeid的中文信息显示在控制台上
"""
for i in items:
i.name=i.name.encode("utf-8").decode("unicode_escape")
i._nodeid=i.nodeid.encode("utf-8").decode("unicode_escape")
什么是 5W1H?
描述 | |
---|---|
What | 基本介绍 |
Why | 使用价值与收益 |
Where | 应用场景 |
When | 何时使用 |
Who | 由谁完成,谁去做 |
How | 如何使用 |
手工测试 | Web 自动化测试 | |
---|---|---|
上手难度 | ⭐️ | ⭐️⭐️⭐️ |
执行重复、繁琐的测试 | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️ |
测试效率 | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️ |
多浏览器兼容测试 | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️⭐️ |
模块 | 内容 |
---|---|
环境安装与配置 | IDE Python/Java |
被测环境 | PetClinic ApiDemo |
自动化库 | Selenium Appium |
自动化技术 | driver element wait |
测试用例结构 | 测试数据 测试步骤 断言 |
PO 设计模式 | 封装 POM |
测试用例设计 | 提高测试覆盖 |
形式 | 章节 | 描述 | 课时 |
---|---|---|---|
知识点 | Web 自动化测试价值与体系 | 价值体系 技术选型 学习路线 | 1 个课时 |
知识点 | 环境安装与使用 | selenium、 chromedriver、 firefox geckodriver | 1 个课时 |
知识点 | 自动化用例录制 | selenium IDE、录制、回放、基本使用 | 1 个课时 |
知识点 | 自动化测试用例结构分析 | 录制代码解析,代码结构优化 | 1 个课时 |
知识点 | capability 配置参数解析 | capability 用法 ,firefox chrome 等浏览器的专属 capability | 1 个课时 |
知识点 | web 浏览器控制 | 打开网页、刷新、回退、最大化、最小化 | 1 个课时 |
知识点 | 常见控件定位方法 | id name css xpath link 定位 | 1 个课时 |
知识点 | 强制等待与隐式等待 | 介绍 selenium 经典的三种等待方式 | 1 个课时 |
知识点 | 常见控件交互方法 | 点击,输入,清空,获取元素文本、尺寸等属性信息 | 1 个课时 |
实战 | 测试人论坛搜索功能自动化测试 | 用例设计、用例编写、断言 | 1 个课时 |
形式 | 章节 | 描述 |
---|---|---|
知识点 | 高级定位-css | css 使用场景、语法 |
知识点 | 高级定位-xpath | xpath 使用场景、语法 |
知识点 | 显式等待高级使用 | 显式等待原理与使用 |
知识点 | 高级控件交互方法 | 右键点击、页面滑动、表单填写等自动化动作 |
知识点 | 网页 frame 与多窗口处理 | 多窗口,多 frame 下的窗口识别与切换 |
知识点 | 文件上传弹框处理 | 文件上传的自动化与弹框处理机制 |
知识点 | 自动化关键数据记录 | 行为日志、截图,page source |
实战 | 电子商务产品实战 | 用例设计、日志封装、测试报告 |
形式 | 章节 | 描述 |
---|---|---|
知识点 | 浏览器复用 | 利用远程调试技术实现自动化登录 |
知识点 | Cookie 复用 | 利用 cookie 复用实现自动化登录 |
知识点 | page object 设计模式 | page object 模式的发展历史介绍、六大设计原则 |
知识点 | 异常自动截图 | 测试用例失败时自动截图 |
知识点 | 测试用例流程设计 | 测试装置的应用,套件级别的初始化与清理、用例级别的初始化与清理 |
实战 | 电子商务产品实战 | page object 设计模式应用、BasePage 封装、基于 page object 模式的测试用例编写 |