提交 312dda8e authored 作者: 陈泽健's avatar 陈泽健

优化会议预约的脚本,增加预约类型、消息提醒、通知方式以及是否创建模板的代码判断,根据对应需求创建对应类型的会议。

上级 7108a29a
......@@ -60,4 +60,5 @@
- 输出会议预定代码,预约主流程已完成。
17. 2024-11-20
- 排查驱动加载失败问题,问题由浏览器驱动与当前浏览器版本不同导致,已优化代码为自动根据浏览器版本下载对应驱动。
- 补充关于定制化项目的脚本路径,补充工商银行查询停车缴费系统数据的代码。
\ No newline at end of file
- 补充关于定制化项目的脚本路径,补充工商银行查询停车缴费系统数据的代码。
- 优化会议预约的脚本,增加预约类型、消息提醒、通知方式以及是否创建模板的代码判断,根据对应需求创建对应类型的会议。
\ No newline at end of file
......@@ -35,14 +35,29 @@ class Message_Book_000x:
"""
执行测试步骤以会议室删除功能。
本函数根据参数输入会议室名称进行搜索并删除会议室,并检查删除后的提示信息是否与预期相符。
字段含义:
name:用例名称
conference_name:会议室名称
message_name:会议名称
book_type:预约类型
repetitive_cycle:重复周期
host_name:主持人名称
message_content:会议内容
book_start_time:会议开始时间
book_end_time:会议结束时间
inside_participant_name:内部参会人名称
outside_participant_name:外部参会人名称
outside_participant_phone:外部参会人手机号码
message_notification:消息提醒时间
notification_method:通知方式
check_text:检查提示文本
"""
# 初始化通知文本为空字符串
notify_text = ""
# 从全局存储中获取webdriver实例
wd = GSTORE['wd']
# 从self.para中解构出用户名、密码、验证码和检查文本
name = self.name
conference_name, message_name, book_type, repetitive_cycle, host_name, message_content, book_start_time, book_end_time, inside_participant_name, outside_participant_name, outside_participant_phone,notification_method, check_text = self.para
conference_name, message_name, book_type, repetitive_cycle, host_name, message_content, book_start_time, book_end_time, inside_participant_name, outside_participant_name, outside_participant_phone, save_template, template_name, message_notification, notification_method, check_text = self.para
# 在会议室列表搜索会议室
STEP(1, f"在会议室列表搜索:{conference_name}")
......@@ -82,7 +97,8 @@ class Message_Book_000x:
# 选择普通会议
safe_click((By.XPATH, f"//span[contains(text(),'{book_type}')]"), wd)
sleep(1)
else:
elif book_type == "周期会议":
INFO("预约类型为:周期会议")
# 选择周期会议
safe_click((By.XPATH, f"//span[contains(text(),'{book_type}')]"),wd)
......@@ -199,10 +215,40 @@ class Message_Book_000x:
INFO(f"页面标题为:{notify_text}")
CHECK_POINT("页面标题是否正确", "消息提醒" in notify_text)
# 判断是否需要存入模板
INFO(f"是否需要存入模板:{save_template}")
if save_template == "是":
# 点击【是】按钮
safe_click((By.XPATH,f"//span[@class='el-radio__label'][contains(text(),'{save_template}')]"),wd)
# 输入模板名称
safe_send_keys((By.XPATH,"//input[@placeholder='请输入模版名称']"),template_name,wd)
sleep(1)
else:
# 点击【否】按钮
safe_click((By.XPATH, f"//span[@class='el-radio__label'][contains(text(),'{save_template}')]"), wd)
sleep(1)
# 选择消息提醒时间
INFO(f"选择消息提醒时间:{message_notification}")
# 判断消息提醒时间是否为全选
if message_notification == "全选":
# 点击【全选】按钮
safe_click((By.XPATH,"//div[@class='Reminds']//span[@class='el-checkbox__label'][contains(text(),'全选')]"),wd)
sleep(1)
else:
# 选择对应的消息提醒时间
safe_click((By.XPATH, f"//span[contains(text(),'{message_notification}')]"), wd)
sleep(1)
# 选择通知方式
INFO(f"选择通知方式:{notification_method}")
safe_click((By.XPATH,f"//span[contains(text(),'{notification_method}')]"),wd)
sleep(1)
if notification_method == "全选":
# 点击【全选】按钮
safe_click((By.XPATH,"//div[@class='Sendout']//span[@class='el-checkbox__label'][contains(text(),'全选')]"),wd)
else:
# 选择对应的通知方式
safe_click((By.XPATH, f"//span[contains(text(),'{notification_method}')]"), wd)
sleep(1)
# 点击【确定】按钮
STEP(6, "点击【确定】按钮")
......@@ -218,11 +264,27 @@ class Message_Book_000x:
message_content_text = elment_get_text((By.XPATH,f"//div[contains(text(),'{message_content}')]"),wd)
CHECK_POINT("提示信息是否正确", message_name_text in message_name and message_content_text in message_content)
# 点击最后【确定】按钮
# 点击最后【确定】按钮,预定成功后会跳转至已预定界面
STEP(8, "点击【确定】按钮")
safe_click((By.XPATH,"//div[contains(@aria-label,'会议信息')]//span[contains(text(),'确定')]"),wd)
sleep(4)
sleep(1)
# 查看是否显示加载中
notify_text = elment_get_text((By.XPATH,"//p[@class='el-loading-text']"),wd)
CHECK_POINT("是否显示加载中", "提交数据中" in notify_text)
sleep(1)
# 获取提示信息
notify_text = get_notify_text(wd,(By.XPATH,"//p[contains(@class,'el-message__content')]"),"Message_Manage","Message_Book",f"{name}_预定成功提示信息")
INFO(f"预定成功提示信息为:{notify_text}")
CHECK_POINT("预定成功提示是否正确", notify_text == check_text)
\ No newline at end of file
CHECK_POINT("预定成功提示是否正确", notify_text == check_text)
# 进行切换至会议室列表界面
STEP(9, "跳转至会议室列表界面")
# 点击会议室列表导航栏
safe_click((By.XPATH,"//span[contains(text(),'会议室列表')]"),wd)
sleep(1)
INFO("检查界面标题是否为:会议室列表")
# 获取会议室列表界面的标题信息
notify_text = elment_get_text((By.XPATH,"//div[@class='header']//span[contains(text(),'会议室列表')]"),wd)
CHECK_POINT("界面标题是否正确", "会议室列表" in notify_text)
\ No newline at end of file
......@@ -201,7 +201,7 @@ CSV文件已读取
========= 测试开始 : 20241120_103639 =========
========= 测试开始 : 20241120_114246 =========
......@@ -231,7 +231,7 @@ CSV文件已读取
>>> cases\会议主流程\会议预约.py
* 会议预约_001 - 2024-11-20 10:36:55
* 会议预约_002 - 2024-11-20 11:42:53
[ case execution steps ]
......@@ -250,3 +250,110 @@ CSV文件已读取
** 检查点 ** 页面标题是否正确 ----> 通过
-- 第 3 步 -- 会议第一步数据填写
输入会议名称:这是普通会议测试,选择预约类型:普通会议,输入主持人:陈泽键,输入会议内容:这是会议内容嘿嘿,选择会议开始时间:21:00,选择会议结束时间:22:15
预约类型为:普通会议
时间差为:time_diff_minutes
开始时间与结束时间不相等,选择时间块:21:00,22:15
时间差大于最大预约时长1小时,选择【超出预约时长】
picture imgs/Message_Manage/Message_Book/会议预约_002_超出预约时长20241120114304313792.png
提示信息为:最大预定时间 1 小时
** 检查点 ** 超出预约时长提示是否正确 ----> 通过
不选时间点击【下一步】查看提示信息
picture imgs/Message_Manage/Message_Book/会议预约_002请选择会议时间提示信息20241120114307499621.png
提示信息为:请选择会议时间
** 检查点 ** 未选时间提示是否正确 ----> 通过
重新选择结束时间为:21:45
-- 第 4 步 -- 会议第二步数据填写
选择内部参会人:admin@CZJ
已选择参会人:admin@CZJ
** 检查点 ** 内部参会人选择是否正确 ----> 通过
输入外部参会人名称:陈泽坚,外部参会人号码:17319004674
检查弹窗标题是否正确
弹窗标题为:添加外部参会人员
** 检查点 ** 弹窗标题是否正确 ----> 通过
picture imgs/Message_Manage/Message_Book/会议预约_002_添加外部参会人提示信息20241120114316455878.png
提示信息为:添加成功
** 检查点 ** 提示信息是否正确 ----> 通过
-- 第 5 步 -- 会议第三步数据填写
检查页面标题是否正确
页面标题为:消息提醒
** 检查点 ** 页面标题是否正确 ----> 通过
是否需要存入模板:是
选择消息提醒时间:全选
选择通知方式:邮件
-- 第 6 步 -- 点击【确定】按钮
-- 第 7 步 -- 检查提示会议信息是否正确
输入会议名称:这是普通会议测试,输入会议内容:这是会议内容嘿嘿
** 检查点 ** 提示信息是否正确 ----> 通过
-- 第 8 步 -- 点击【确定】按钮
** 检查点 ** 是否显示加载中 ----> 通过
picture imgs/Message_Manage/Message_Book/会议预约_002_预定成功提示信息20241120114331233904.png
预定成功提示信息为:预定成功
** 检查点 ** 预定成功提示是否正确 ----> 通过
-- 第 9 步 -- 跳转至会议室列表界面
检查界面标题是否为:会议室列表
** 检查点 ** 界面标题是否正确 ----> 通过
PASS
[ suite teardown ] cases\
清除浏览器
========= 测试结束 : 20241120_114334 =========
耗时 : 48.517 秒
预备执行用例数量 : 1
实际执行用例数量 : 1
通过 : 1
失败 : 0
异常 : 0
套件初始化失败 : 0
套件清除 失败 : 0
用例初始化失败 : 0
用例清除 失败 : 0
......@@ -5,3 +5,297 @@
== cases\__st__.py
== cases\会议主流程\__st__.py
== cases\会议主流程\会议预约.py
CSV文件已读取
== cases\会议室管理\会议室管理\__st__.py
== cases\会议室管理\会议室管理\会议室删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\会议室管理\会议室编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\__st__.py
== cases\会议室管理\功能管理\功能删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\功能管理\功能编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\__st__.py
== cases\会议室管理\区域管理\区域删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\会议室管理\区域管理\区域编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\测试\test.py
** no cases in this file, skip it.
== cases\登录模块\账号密码登录测试.py
CSV文件已读取
** no cases in this file , skip it.
== cases\系统管理\__st__.py
== cases\系统管理\系统设置.py
** no cases in this file , skip it.
== cases\设备管理\安卓信息.py
** no cases in this file, skip it.
== cases\设备管理\毫米波雷达.py
** no cases in this file, skip it.
== cases\账号管理\用户管理\__st__.py
== cases\账号管理\用户管理\主流程.py
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户修改密码.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户状态设置.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\用户管理\用户编辑.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\__st__.py
== cases\账号管理\部门管理\主流程.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门删除.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门新增.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门查询.py
CSV文件已读取
** no cases in this file , skip it.
== cases\账号管理\部门管理\部门编辑.py
CSV文件已读取
** no cases in this file , skip it.
=== [ 执行测试用例 ] ===
预备执行用例数量 : 1
========= 测试开始 : 20241120_114217 =========
>>> cases\
[ suite setup ] cases\
-- 第 1 步 -- 初始化浏览器
'----------' 正在初始化浏览器 '----------'
'----------' 浏览器初始化完成 '----------'
-- 第 2 步 -- 处理SSL认证
'----------' 正在处理SSL证书警告 '----------'
'----------' SSL证书警告处理完成 '----------'
>>> cases\会议主流程\
[ suite setup ] cases\会议主流程\
输入用户名:admin@ZDH
输入密码:Ubains@4321
输入验证码:csba
点击登录按钮
>>> cases\会议主流程\会议预约.py
* 会议预约_002 - 2024-11-20 11:42:21
[ case execution steps ]
-- 第 1 步 -- 在会议室列表搜索:产研中心会议室
检查搜索结果
搜索结果为:产研中心会议室
** 检查点 ** 搜索结果是否正确 ----> 通过
-- 第 2 步 -- 点击【会议预定】按钮
检查页面标题是否正确
页面标题为:会议预定
** 检查点 ** 页面标题是否正确 ----> 通过
-- 第 3 步 -- 会议第一步数据填写
输入会议名称:这是普通会议测试,选择预约类型:普通会议,输入主持人:陈泽键,输入会议内容:这是会议内容嘿嘿,选择会议开始时间:21:00,选择会议结束时间:22:15
预约类型为:普通会议
时间差为:time_diff_minutes
开始时间与结束时间不相等,选择时间块:21:00,22:15
时间差大于最大预约时长1小时,选择【超出预约时长】
picture imgs/Message_Manage/Message_Book/会议预约_002_超出预约时长20241120114232102398.png
提示信息为:该时间段已有会议,请重新选择
** 检查点 ** 超出预约时长提示是否正确 ----> !! 不通过!!
FAIL
Traceback:
File "D:\GithubData\自动化脚本-4\ubains-module-test\预定系统\cases\会议主流程\会议预约.py", line 142, in teststeps
CHECK_POINT("超出预约时长提示是否正确", "最大预定时间 1 小时" in notify_text)
File "C:\Users\29194\AppData\Local\Programs\Python\Python310\lib\site-packages\hytest\common.py", line 76, in CHECK_POINT
raise AssertionError()
AssertionError
[ suite teardown ] cases\
清除浏览器
========= 测试结束 : 20241120_114234 =========
耗时 : 17.118 秒
预备执行用例数量 : 1
实际执行用例数量 : 1
通过 : 0
失败 : 1
异常 : 0
套件初始化失败 : 0
套件清除 失败 : 0
用例初始化失败 : 0
用例清除 失败 : 0
......@@ -91,11 +91,6 @@ CSV文件已读取
== cases\测试\test.py
** no cases in this file, skip it.
== cases\测试\工商银行项目-停车系统预约列表获取.py
** no cases in this file, skip it.
== cases\登录模块\账号密码登录测试.py
......@@ -206,7 +201,7 @@ CSV文件已读取
========= 测试开始 : 20241120_102706 =========
========= 测试开始 : 20241120_114105 =========
......@@ -217,46 +212,104 @@ CSV文件已读取
-- 第 1 步 -- 初始化浏览器
'----------' 正在初始化浏览器 '----------'
'----------' 浏览器初始化完成 '----------'
-- 第 2 步 -- 处理SSL认证
'----------' 正在处理SSL证书警告 '----------'
suite setup fail | 'NoneType' object has no attribute 'find_element'
Traceback:
File "D:\GithubData\自动化脚本-4\ubains-module-test\预定系统\cases\__st__.py", line 22, in suite_setup
handle_ssl_warning()
File "D:\GithubData\自动化脚本-4\ubains-module-test\预定系统\Base\base.py", line 64, in handle_ssl_warning
safe_click((By.XPATH, '//*[@id="details-button"]'), wd)
File "D:\GithubData\自动化脚本-4\ubains-module-test\预定系统\Base\base.py", line 169, in safe_click
element = WebDriverWait(wd, 20).until(EC.visibility_of_element_located(element_locator))
File "C:\Users\29194\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\support\wait.py", line 96, in until
value = method(self._driver)
File "C:\Users\29194\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\support\expected_conditions.py", line 156, in _predicate
return _element_if_visible(driver.find_element(*locator))
AttributeError: 'NoneType' object has no attribute 'find_element'
'----------' SSL证书警告处理完成 '----------'
>>> cases\会议主流程\
[ suite setup ] cases\会议主流程\
输入用户名:admin@ZDH
输入密码:Ubains@4321
输入验证码:csba
点击登录按钮
>>> cases\会议主流程\会议预约.py
* 会议预约_002 - 2024-11-20 11:41:38
[ case execution steps ]
-- 第 1 步 -- 在会议室列表搜索:产研中心会议室
检查搜索结果
搜索结果为:产研中心会议室
** 检查点 ** 搜索结果是否正确 ----> 通过
-- 第 2 步 -- 点击【会议预定】按钮
检查页面标题是否正确
页面标题为:会议预定
** 检查点 ** 页面标题是否正确 ----> 通过
-- 第 3 步 -- 会议第一步数据填写
输入会议名称:这是普通会议测试,选择预约类型:普通会议,输入主持人:陈泽键,输入会议内容:这是会议内容嘿嘿,选择会议开始时间:21:00,选择会议结束时间:22:15
预约类型为:普通会议
时间差为:time_diff_minutes
开始时间与结束时间不相等,选择时间块:21:00,22:15
时间差大于最大预约时长1小时,选择【超出预约时长】
picture imgs/Message_Manage/Message_Book/会议预约_002_超出预约时长20241120114149089727.png
提示信息为:最大预定时间 1 小时
** 检查点 ** 超出预约时长提示是否正确 ----> 通过
不选时间点击【下一步】查看提示信息
picture imgs/Message_Manage/Message_Book/会议预约_002请选择会议时间提示信息20241120114152281208.png
提示信息为:请选择会议时间
** 检查点 ** 未选时间提示是否正确 ----> 通过
重新选择结束时间为:21:45
-- 第 4 步 -- 会议第二步数据填写
选择内部参会人:admin@CZJ
已选择参会人:admin@CZJ
** 检查点 ** 内部参会人选择是否正确 ----> 通过
输入外部参会人名称:陈泽坚,外部参会人号码:17319004674
检查弹窗标题是否正确
弹窗标题为:添加外部参会人员
** 检查点 ** 弹窗标题是否正确 ----> 通过
picture imgs/Message_Manage/Message_Book/会议预约_002_添加外部参会人提示信息20241120114201205193.png
提示信息为:添加成功
** 检查点 ** 提示信息是否正确 ----> 通过
========= 测试结束 : 20241120_102714 =========
-- 第 5 步 -- 会议第三步数据填写
耗时 : 7.684 秒
检查页面标题是否正确
页面标题为:消息提醒
** 检查点 ** 页面标题是否正确 ----> 通过
预备执行用例数量 : 1
是否需要存入模板:是
选择消息提醒时间:全选
选择通知方式:邮件
实际执行用例数量 : 0
-- 第 6 步 -- 点击【确定】按钮
通过 : 0
失败 : 0
-- 第 7 步 -- 检查提示会议信息是否正确
异常 : 0
输入会议名称:这是普通会议测试,输入会议内容:这是会议内容嘿嘿
套件初始化失败 : 1
** 检查点 ** 提示信息是否正确 ----> 通过
套件清除 失败 : 0
用例初始化失败 : 0
-- 第 8 步 -- 点击【确定】按钮
用例清除 失败 : 0
name,conference_name,message_name,book_type,repetitive_cycle,host_name,message_content,book_start_time,book_end_time,inside_participant_name,outside_participant_name,outside_participant_phone,notification_method,check_text
会议预约_001,产研中心会议室,这是会议名称测试,普通会议,每天,陈泽键,这是会议内容哈哈,19:00,20:15,admin@CZJ,陈泽坚,17319004674,短信,预定成功
\ No newline at end of file
name,conference_name,message_name,book_type,repetitive_cycle,host_name,message_content,book_start_time,book_end_time,inside_participant_name,outside_participant_name,outside_participant_phone,save_template,template_name,message_notification,notification_method,check_text
会议预约_001,产研中心会议室,这是周期会议测试,周期会议,每天,陈泽键,这是会议内容哈哈,19:00,20:15,admin@CZJ,陈泽坚,17319004674,否,这是模板,开会前一天提醒,短信,预定成功
会议预约_002,产研中心会议室,这是普通会议测试,普通会议,每天,陈泽键,这是会议内容嘿嘿,21:00,22:15,admin@CZJ,陈泽坚,17319004674,是,这是模板名称,全选,邮件,预定成功
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论