import os import random import time from framework.core.logger import get_logger from framework.config.settings import Config logger = get_logger("ThreeDGenerationScenario") def run_3d_generation_lifecycle(threed_page): """ 业务逻辑:3D 生成 + 右上角保存全流程 """ logger.info("--- 开启 3D 生成场景测试 (包含生成后保存) ---") threed_page.navigate_to() # 1. 随机选取一张 PNG 素材 test_data_dir = Config.TEST_DATA_DIR png_files = [f for f in os.listdir(test_data_dir) if f.lower().endswith('.png')] if not png_files: logger.warning(f"⚠️ 目录 {test_data_dir} 下没发现 PNG, 尝试使用默认素材") return random_pic = random.choice(png_files) pic_path = os.path.join(test_data_dir, random_pic) # 调试 #threed_page.page.pause() logger.info(f"🎲 随机选取的素材为: {random_pic}") # 2. 上传并触发生成 threed_page.upload_image(pic_path) time.sleep(1) if threed_page.start_generation(): # 3. 等待生成结果出现并点击保存 if threed_page.wait_for_result_and_save(): # 4. 执行复杂的保存弹窗流程 (含随机命名与路径选择) asset_name = threed_page.handle_save_dialog() logger.info(f"✨ 3D 模型巡检完毕,资产 {asset_name} 已保存") return asset_name else: logger.error("❌ 等待结果超时,未进入保存流程") else: logger.error("❌ 无法点击生成按钮,场景中断") return None