from time import sleep from hytest import * # 获取当前脚本的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建预定系统的绝对路径 预定系统_path = os.path.abspath(os.path.join(current_dir, '..','..','..','..')) # 添加路径 sys.path.append(预定系统_path) # 导入模块 try: from 预定系统.Base.base import * except ModuleNotFoundError as e: print(f"ModuleNotFoundError: {e}") print("尝试使用绝对路径导入") from 预定系统.Base.base import * # 获取当前脚本所在的目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建CSV文件的绝对路径 csv_file_path = os.path.join(current_dir, '../../../测试数据/会议室管理/会议室管理模块/会议室新增.csv') class Conference_Add_000x: tags = ['会议室管理功能' , '后台管理功能','预定系统功能'] """ 执行指令: 1.cd 预定系统 2.hytest --report_title 会议室新增测试报告 --test 会议室新增_0** """ ddt_cases = read_csv_data(csv_file_path) def teststeps(self): """ 执行测试步骤以会议室新增功能。 本函数根据参数输入会议室名称、,并检查新增后的提示信息是否与预期相符。 """ # 初始化通知文本为空字符串 notify_text = "" # 从全局存储中获取webdriver实例 wd = GSTORE['wd'] # 从self.para中解构出用户名、密码、验证码和检查文本 name = self.name conference_name, conference_token, conference_function, conference_capacity, check_text, back_check_text = self.para if back_check_text == "添加成功": # 步骤1:点击【新增】按钮,触发新增会议室的操作 STEP(1, "点击【新增】按钮") # 使用safe_click方法点击新增按钮,确保操作的安全性和稳定性 safe_click((By.XPATH, "//span[contains(text(),'添 加')]"), wd) # 暂停1秒,等待页面加载完成 sleep(1) # 获取新增会议室弹窗的标题文本,用于验证弹窗是否正确显示 notify_text = elment_get_text((By.XPATH, "//span[contains(text(),'新增会议室')]"), wd) # 记录日志,检查新增会议室弹窗的标题是否正确 INFO(f"检查新增会议室弹窗标题是否为:{notify_text}") # 再次暂停1秒,确保页面元素已经完全加载 sleep(1) # 步骤2:在新增会议室弹窗中输入会议室名称 STEP(2, f"输入会议室名称:{conference_name}") # 使用safe_send_keys方法在输入框中输入会议室名称 safe_send_keys((By.XPATH, "//input[@placeholder='输入会议室名称']"), conference_name, wd) # 暂停1秒,等待输入操作完成 sleep(1) # 步骤3:绑定会议室的授权码 STEP(3, f"绑定会议室授权码:{conference_token}") # 点击授权码选择框,展开下拉菜单 safe_click((By.XPATH, "//div[@class='el-select authorize_input']//i[@class='el-select__caret el-input__icon el-icon-arrow-up']"), wd) # 暂停1秒,等待下拉菜单加载完成 sleep(1) # 从下拉菜单中选择指定的授权码 safe_click((By.XPATH, f"//span[normalize-space()='{conference_token}']"), wd) # 暂停1秒,确保授权码绑定成功 sleep(1) # 步骤4:选择会议室的功能设置 STEP(4, f"选择会议室功能:{conference_function}") # 点击功能设置按钮,打开功能设置弹窗 safe_click((By.XPATH, "(//span[contains(text(),'设置(0)')])[1]"), wd) # 暂停1秒,等待功能设置弹窗加载完成 sleep(1) # 获取功能设置弹窗的标题文本,用于验证弹窗是否正确显示 notify_text = elment_get_text((By.XPATH, "//span[contains(text(),'会议室功能')]"), wd) # 记录日志,检查功能设置弹窗的标题是否正确 INFO(f"检查会议室功能设置弹窗标题是否为:{notify_text}") # 检查点:验证功能设置弹窗是否正确弹出 CHECK_POINT("检查是否弹出功能设置弹窗", notify_text == "会议室功能") # 步骤5:在功能设置中搜索特定的会议室功能 STEP(5, f"搜索会议室功能:{conference_function}") # 在搜索框中输入会议室功能的关键字 safe_send_keys((By.XPATH, "(//input[@placeholder='输入关键字'])[1]"), conference_function, wd) # 发送键盘事件,触发搜索操作 send_keyboard((By.XPATH, "(//input[@placeholder='输入关键字'])[1]"), wd) # 暂停1秒,等待搜索结果加载完成 sleep(1) # 获取搜索结果的文本,用于验证是否找到指定的会议室功能 notify_text = elment_get_text((By.XPATH, f"//span[contains(text(),'{conference_function}')]"), wd) # 记录日志,检查是否搜索到指定的会议室功能 INFO(f"检查是否搜索到功能:{notify_text}") # 检查点:验证是否搜索到指定的会议室功能 CHECK_POINT("检查是否搜索到功能", notify_text == conference_function) # 步骤6:选择并绑定会议室功能 STEP(6, "勾选功能进行绑定") # 点击搜索结果中的会议室功能,选中它 safe_click((By.XPATH, f"//span[contains(text(),'{conference_function}')]"), wd) # 点击右箭头按钮,将选中的功能绑定到会议室 safe_click((By.XPATH, "//i[@class='el-icon-arrow-right']"), wd) # 暂停1秒,确保功能绑定成功 sleep(1) # 步骤7:确认功能选择的结果 STEP(7, f"查看功能选择结果") # 获取左侧列表的文本,用于验证是否清空 notify_text = elment_get_text((By.XPATH, "(//p[contains(text(),'无匹配数据')])[1]"), wd) # 记录日志,检查左侧列表是否清空 INFO(f"检查左侧列表是否清空:{notify_text}") # 检查点:验证左侧列表是否清空 CHECK_POINT("检查左侧列表是否清空", notify_text == "无匹配数据") # 获取右侧列表的文本,用于验证是否绑定功能 notify_text = elment_get_text((By.XPATH, f"//span[contains(text(),'{conference_function}')]"), wd) # 记录日志,检查右侧列表是否绑定功能 INFO(f"检查右侧列表是否绑定功能:{notify_text}") # 检查点:验证右侧列表是否绑定功能 CHECK_POINT("检查右侧列表是否绑定功能", notify_text == conference_function) # 步骤8:在会议室功能界面点击确定按钮 STEP(8, "会议室功能界面点击【确定】按钮") # 点击确定按钮,关闭功能设置弹窗 safe_click((By.XPATH, "//div[@aria-label='会议室功能']//span[contains(text(),'确定')]"), wd) # 步骤9:输入会议室可容纳的人数 STEP(9, f"输入会议室容纳人数:{conference_capacity}") # 在输入框中输入会议室可容纳的人数 safe_send_keys((By.XPATH, "//input[@placeholder='2']"), conference_capacity, wd) # 步骤10:在新增会议室界面点击保存按钮 STEP(10, "会议室新增界面点击【保存】按钮") # 点击保存按钮,提交新增会议室的信息 safe_click((By.XPATH, "//span[contains(text(),'保 存')]"), wd) # 暂停2秒,等待保存操作完成 sleep(2) # 如果会议室名称为空,执行以下步骤 if conference_name == "": # 步骤11:检查新增会议室的结果 STEP(11, f"检查新增结果是否为:{check_text}") # 获取提示信息的文本,用于验证新增结果 notify_text = get_notify_text(wd, (By.XPATH, "//p[@class='el-message__content']"), "Conference_Manage", "Conference_Add", f"{name}_查看提示信息") # 记录日志,检查新增结果是否正确 INFO(f"检查新增结果为:{notify_text}") # 检查点:验证新增结果是否正确 CHECK_POINT("检查新增结果", notify_text == check_text) # 步骤12:点击【重置】按钮 STEP(12, "点击【重置】按钮") # 使用safe_click方法点击重置按钮 safe_click((By.XPATH, "//span[contains(text(),'重置')]"), wd) # 暂停1秒,等待重置操作完成 sleep(1) # 获取重置弹窗的标题文本,用于验证弹窗是否正确显示 notify_text = elment_get_text((By.XPATH, "//p[contains(text(),'确定重置?')]"), wd) # 记录日志,检查重置弹窗的标题是否正确 INFO(f"检查重置弹窗标题是否为:{notify_text}") # 检查点:验证重置弹窗的标题是否正确 CHECK_POINT("检查重置弹窗标题", notify_text == "确定重置?") # 步骤13:点击【确定】按钮 STEP(13, "点击【确定】按钮") # 使用safe_click方法点击确定按钮,确认重置操作 safe_click((By.XPATH, "(//span[contains(text(),'确定')])[12]"), wd) # 暂停1秒,等待重置操作完成 sleep(1) else: # 步骤11:检查新增会议室的结果 STEP(11, f"检查新增结果是否为:{check_text}") # 获取提示信息的文本,用于验证新增结果 notify_text = get_notify_text(wd, (By.XPATH, "//p[@class='el-message__content']"), "Conference_Manage", "Conference_Add", f"{name}_查看提示信息") # 记录日志,检查新增结果是否正确 INFO(f"检查新增结果为:{notify_text}") # 检查点:验证新增结果是否正确 CHECK_POINT("检查新增结果", notify_text == check_text) # 暂停1秒,等待提示信息消失 sleep(1) # 步骤12:在会议室列表中查询新增的会议室 STEP(12, f"在会议室列表查询:{conference_name}") # 在搜索框中输入会议室名称 safe_send_keys((By.XPATH, "//input[@placeholder='输入关键字']"), conference_name, wd) # 发送键盘事件,触发搜索操作 send_keyboard((By.XPATH, "//input[@placeholder='输入关键字']"), wd) # 暂停1秒,等待搜索结果加载完成 sleep(1) # 步骤13:检查会议室新增后的数据回显 STEP(13, f"检查会议室新增后的数据回显") # 暂停1秒,确保数据加载完成 sleep(1) # 获取会议室名称的文本,用于验证是否正确回显 conference_name_text = elment_get_text((By.XPATH, "//tbody/tr[1]/td[2]/div[1]"), wd) # 获取会议室功能的文本,用于验证是否正确回显 conference_function_text = elment_get_text((By.XPATH, f"//div[normalize-space()='{conference_function}']"), wd) # 获取会议室容纳人数的文本,用于验证是否正确回显 conference_capacity_text = elment_get_text((By.XPATH, f"//div[normalize-space()='{conference_capacity}']"), wd) # 记录日志,检查新增会议室名称是否正确 INFO(f"检查新增会议室名称为:{conference_name_text}") CHECK_POINT("检查新增会议室名称", conference_name_text == conference_name) # 记录日志,检查新增会议室功能是否正确 INFO(f"检查新增会议室功能为:{conference_function_text}") CHECK_POINT("检查新增会议室功能", conference_function_text == conference_function) # 记录日志,检查新增会议室容纳人数是否正确 INFO(f"检查新增会议室容纳人数为:{conference_capacity_text}") CHECK_POINT("检查新增会议室容纳人数", conference_capacity_text == conference_capacity) if name == '会议室新增_101': wd.refresh()