from playwright.sync_api import sync_playwright
from case.baidu import main
from case.baidu01 import calculate
from case.baidu02 import main01
# 2. 用列表管理模块信息(只引用已导入的函数)
# 格式:(函数名, 对应的文件名, 是否需要playwright实例p)
modules = [
(main, "case.baidu.py", True),
(main01, "case.baidu01.py", True),
(calculate, "case.baidu02.py", False),
# 新增模块只需在这里添加,例如:
# (other_func, "case.other.py", False),
]
# 初始化统计变量
success_files = []
fail_files = []
success_count = 0
fail_count = 0
# 3. 循环批量执行所有模块
# 创建一个 Playwright 上下文,在这个上下文中可以通过变量 p 操作浏览器 with sync_playwright() as p
with sync_playwright() as p:
for func, file_name, need_p in modules:
try:
# 根据是否需要playwright实例传递参数
if need_p:
func(p) # 需要p的函数(如main(p))
else:
func() # 不需要p的函数(如calculate())
# 执行成功
success_files.append(file_name)
success_count += 1
except Exception as e:
# 执行失败
fail_files.append(f"{file_name}(错误:{str(e)})")
fail_count += 1
# 4. 输出统计结果
print("=" * 60)
print(f"成功执行的文件数量:{success_count}")
if success_count > 0:
print("成功的文件列表:")
# enumerate,列举,枚举,enumerate 是 Python 内置函数,用于遍历列表时同时获取元素的 “索引(序号)” 和 “值”
''' 第一个参数 success_files:要遍历的列表(存储成功执行的文件名)。
第二个参数 1:指定序号的起始值(默认从 0 开始,这里设置为 1 使序号从 1 开始)'''
for i, file in enumerate(success_files, 1):
print(f" {i}. {file}")
print("\n" + "-" * 60)
print(f"失败执行的文件数量:{fail_count}")
if fail_count > 0:
print("失败的文件列表(含错误原因):")
for i, file in enumerate(fail_files, 1):
print(f" {i}. {file}")
print("=" * 60)