170 lines
6.7 KiB
Python
170 lines
6.7 KiB
Python
"""
|
|
自动化测试模板管理功能
|
|
使用Playwright自动化浏览器操作
|
|
"""
|
|
|
|
from playwright.sync_api import sync_playwright
|
|
import time
|
|
import os
|
|
|
|
BASE_URL = "http://localhost:8000"
|
|
|
|
def test_template_management():
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=False)
|
|
page = browser.new_page()
|
|
|
|
try:
|
|
print("=" * 60)
|
|
print("Starting Template Management Automated Test")
|
|
print("=" * 60)
|
|
|
|
# 步骤1: 访问超级管理员控制台
|
|
print("\n[1/10] Visiting admin console...")
|
|
page.goto(f"{BASE_URL}/static/super_admin.html")
|
|
page.wait_for_load_state('networkidle')
|
|
page.wait_for_timeout(2000)
|
|
|
|
# 截图查看当前页面
|
|
page.screenshot(path='/tmp/admin_console.png', full_page=True)
|
|
print(" Screenshot saved: /tmp/admin_console.png")
|
|
|
|
# 检查是否需要登录
|
|
current_url = page.url
|
|
if 'login' in current_url:
|
|
print(" Login required! Please login manually...")
|
|
print(" After login, please run this script again")
|
|
input("Press Enter after login to continue...")
|
|
page.goto(f"{BASE_URL}/static/super_admin.html")
|
|
page.wait_for_load_state('networkidle')
|
|
page.wait_for_timeout(2000)
|
|
|
|
# 步骤2: 切换到模板管理标签页
|
|
print("\n[2/10] Switching to Template Management tab...")
|
|
template_tab = page.locator('[data-tab="templates-tab"]')
|
|
template_tab.click()
|
|
page.wait_for_timeout(1000)
|
|
print(" Tab switched successfully")
|
|
|
|
# 步骤3: 查看当前模板信息
|
|
print("\n[3/10] Checking current template metadata...")
|
|
template_meta = page.locator('#templateMeta').text_content()
|
|
print(f" Current template: {template_meta}")
|
|
|
|
# 步骤4: 下载当前模板
|
|
print("\n[4/10] Downloading current template...")
|
|
with page.expect_download() as download_info:
|
|
download_btn = page.locator('#downloadTemplateBtn')
|
|
download_btn.click()
|
|
page.wait_for_timeout(2000)
|
|
|
|
download = download_info.value
|
|
original_filename = download.suggested_filename
|
|
print(f" Downloaded: {original_filename}")
|
|
|
|
# 步骤5: 准备上传测试模板
|
|
print("\n[5/10] Preparing test template upload...")
|
|
test_template = "RiskTemplate_Test.xlsx"
|
|
|
|
if not os.path.exists(test_template):
|
|
print(f" ERROR: Test template not found: {test_template}")
|
|
print(" Please run test_template_management_simple.py first")
|
|
return
|
|
|
|
print(f" Test template ready: {test_template}")
|
|
|
|
# 步骤6: 上传测试模板
|
|
print("\n[6/10] Uploading test template...")
|
|
file_input = page.locator('input[type="file"][name="file"]')
|
|
|
|
# 选择文件
|
|
file_input.set_input_files(test_template)
|
|
print(f" File selected: {test_template}")
|
|
|
|
# 提交表单
|
|
form = page.locator('#templateForm')
|
|
form_submit = form.locator('button[type="submit"]')
|
|
form_submit.click()
|
|
print(" Form submitted")
|
|
|
|
# 等待处理
|
|
page.wait_for_timeout(3000)
|
|
|
|
# 步骤7: 检查上传结果
|
|
print("\n[7/10] Checking upload result...")
|
|
success_msg = page.locator('.message.show')
|
|
msg_count = success_msg.count()
|
|
|
|
if msg_count > 0:
|
|
message_text = success_msg.text_content()
|
|
print(f" Success message: {message_text}")
|
|
else:
|
|
print(" No success message detected (checking if succeeded anyway)")
|
|
|
|
# 重新检查模板信息
|
|
updated_meta = page.locator('#templateMeta').text_content()
|
|
print(f" Updated template: {updated_meta}")
|
|
|
|
# 步骤8: 再次下载验证内容
|
|
print("\n[8/10] Downloading template again to verify...")
|
|
with page.expect_download() as download_info2:
|
|
download_btn2 = page.locator('#downloadTemplateBtn')
|
|
download_btn2.click()
|
|
page.wait_for_timeout(2000)
|
|
|
|
download2 = download_info2.value
|
|
verification_filename = download2.suggested_filename
|
|
print(f" Downloaded: {verification_filename}")
|
|
|
|
# 步骤9: 恢复原始模板
|
|
print("\n[9/10] Restoring original template...")
|
|
original_backup = "RiskTemplate_Original.xlsx"
|
|
|
|
if os.path.exists(original_backup):
|
|
file_input.set_input_files(original_backup)
|
|
print(f" File selected: {original_backup}")
|
|
|
|
form_submit.click()
|
|
print(" Form submitted")
|
|
page.wait_for_timeout(3000)
|
|
|
|
# 检查恢复结果
|
|
restore_msg = page.locator('.message.show')
|
|
if restore_msg.count() > 0:
|
|
restore_text = restore_msg.text_content()
|
|
print(f" Restore message: {restore_text}")
|
|
else:
|
|
print(f" WARNING: Original template not found: {original_backup}")
|
|
print(" Please upload the original template manually")
|
|
|
|
# 步骤10: 最终验证
|
|
print("\n[10/10] Final verification...")
|
|
final_meta = page.locator('#templateMeta').text_content()
|
|
print(f" Final template: {final_meta}")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("Test completed successfully!")
|
|
print("=" * 60)
|
|
print("\nSummary:")
|
|
print(f" - Downloaded original template: {original_filename}")
|
|
print(f" - Uploaded test template: {test_template}")
|
|
print(f" - Verified update")
|
|
print(f" - Downloaded for verification: {verification_filename}")
|
|
print(f" - Restored original template")
|
|
|
|
except Exception as e:
|
|
print(f"\nERROR: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
# 保存错误截图
|
|
page.screenshot(path='/tmp/error_screenshot.png', full_page=True)
|
|
print("Error screenshot saved: /tmp/error_screenshot.png")
|
|
|
|
finally:
|
|
print("\nClosing browser...")
|
|
browser.close()
|
|
|
|
if __name__ == "__main__":
|
|
test_template_management()
|