import sys import os import openpyxl import json from 预定系统.Base.base import INFO # 获取当前脚本的绝对路径 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建预定系统的绝对路径 预定系统_path = os.path.abspath(os.path.join(current_dir, '..', '..', '..', '..')) # 添加路径 sys.path.append(预定系统_path) # 导入模块 from 预定系统.Base.base import * # 获取当前脚本所在的目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建CSV文件的绝对路径 csv_file_path = os.path.join(current_dir, '../../../测试数据/登录模块/新账号密码登录.xlsx') def read_xlsx_data(xlsx_file_path): """ 读取XLSX文件中的数据,并将其转换为一个包含字典的列表,每个字典代表一行测试用例数据。 参数: xlsx_file_path (str): XLSX文件的路径。 返回: list: 包含字典的列表,每个字典包含测试用例的名称和参数。 """ # 打开XLSX文件 workbook = openpyxl.load_workbook(xlsx_file_path) # 假设数据在第一个工作表中 sheet = workbook.active # 读取表头,从第三行开始 headers = [cell.value for cell in sheet[3]] # 打印表头列名 # print(f"表头列名: {headers}") # 找到表头中名为 'JSON' 的列索引 try: json_index = headers.index('JSON') except ValueError as e: raise ValueError(f"表头中没有找到所需的列: {e}") ddt_cases = [] # 遍历XLSX文件中的每一行数据,从第四行开始 for row in sheet.iter_rows(min_row=4, values_only=True): # 获取 JSON 列的数据 json_data = row[json_index] # 打印 JSON 数据以进行调试 # print(f"JSON 数据: {json_data}") # 解析 JSON 字符串 try: if json_data: parsed_json = json.loads(json_data) else: raise ValueError("JSON 数据为空") except json.JSONDecodeError: raise ValueError(f"无法解析 JSON 数据: {json_data}") # 将解析后的 JSON 数据添加到列表中 ddt_cases.append(parsed_json) # 日志记录:XLSX文件已读取 INFO("XLSX文件已读取") # 返回包含所有测试用例数据的列表 return ddt_cases if __name__ == '__main__': ddt_cases = read_xlsx_data(csv_file_path) # print(ddt_cases) browser_init("标准版预定系统") wd = GSTORE['wd'] # 遍历 ddt_cases 并获取每一个 JSON 对象 for case in ddt_cases: for step in case: print(f"当前步骤: {step}") # 你可以在这里对 step 进行进一步处理 # 例如:访问特定字段 # page = step.get('page') # 调用get_by_enum将定位类型转为枚举 locator_type = get_by_enum(step.get('locator_type')) locator_value = step.get('locator_value') element_type = step.get('element_type') element_value = step.get('element_value') # # print(f"页面: {page}") # print(f"元素定位类型: {locator_type}") # print(f"元素定位值: {locator_value}") # print(f"元素类型: {element_type}") # print(f"输入值: {element_value}") safe_send_keys((locator_type, locator_value), element_value, wd) sleep(5)