"""4 种主题切换 + 截图""" import os import time from playwright.sync_api import sync_playwright OUT = r'D:\bwstudio\pear-admin-flask\scripts\screenshots\themes' os.makedirs(OUT, exist_ok=True) THEMES = ['default', 'sunset', 'forest', 'dark'] with sync_playwright() as pw: browser = pw.chromium.launch(headless=True, args=['--no-sandbox', '--disable-gpu']) ctx = browser.new_context(viewport={'width':1440,'height':900}) page = ctx.new_page() page.goto('http://192.168.1.10:5000/', wait_until='networkidle') page.wait_for_timeout(800) for theme in THEMES: # 切换主题 page.evaluate(f'document.documentElement.setAttribute("data-theme", "{theme}"); localStorage.setItem("bw-theme", "{theme}");') page.wait_for_timeout(500) attr = page.evaluate('document.documentElement.getAttribute("data-theme")') print(f' theme={theme} -> html data-theme={attr}') path = os.path.join(OUT, f'{theme}.png') page.screenshot(path=path, full_page=False) print(f' -> {path}') # 验证下拉菜单 page.evaluate('document.documentElement.setAttribute("data-theme", "default"); localStorage.removeItem("bw-theme");') page.reload(wait_until='networkidle') page.wait_for_timeout(800) page.click('#theme-toggle') page.wait_for_timeout(300) # JS 强开菜单,避免点击被 document 监听关闭 page.evaluate('document.getElementById("theme-menu").classList.add("open")') page.wait_for_timeout(500) path = os.path.join(OUT, 'menu_open.png') page.screenshot(path=path, full_page=False) print(f' menu -> {path}') browser.close()