Files
verify-invoice-default/scripts/debug_page.py
chenfuqiang 3a80db8a7e
All checks were successful
技能自动化发布 / release (push) Successful in 7s
chore: auto release commit (2026-09-14 22:22:49)
2026-09-14 22:22:49 +08:00

89 lines
2.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""调试脚本:启动浏览器,停在当前页面,打印 DOM 和截图,方便定位元素。"""
import asyncio
import os
import sys
_scripts_dir = os.path.dirname(os.path.abspath(__file__))
if _scripts_dir not in sys.path:
sys.path.insert(0, _scripts_dir)
from service.rpa.browser_session import start_browser_session, close_browser_context
async def main():
profile_dir = os.environ.get("TEMP", "") + "\\verify-invoice-edge-profile"
os.makedirs(profile_dir, exist_ok=True)
pw, context, page = await start_browser_session(profile_dir, headless=False)
# 打开 sandbox 首页
await page.goto("https://sandbox.jc2009.com/", wait_until="domcontentloaded", timeout=60000)
await asyncio.sleep(5.0)
print("=" * 60)
print(f"当前 URL: {page.url}")
print("=" * 60)
# 打印所有可见文本
try:
body = await page.locator("body").inner_text()
print("\n--- 页面文本(前2000字)---")
print(body[:2000])
except Exception as e:
print(f"获取文本失败: {e}")
# 打印所有 input 元素
print("\n--- 所有 input 元素 ---")
inputs = page.locator("input")
count = await inputs.count()
for i in range(min(count, 20)):
inp = inputs.nth(i)
try:
itype = await inp.get_attribute("type") or ""
iname = await inp.get_attribute("name") or ""
iid = await inp.get_attribute("id") or ""
placeholder = await inp.get_attribute("placeholder") or ""
value = await inp.input_value()
print(f" [{i}] type={itype} name={iname} id={iid} placeholder={placeholder} value={value[:30]}")
except:
pass
# 打印所有 button
print("\n--- 所有 button ---")
buttons = page.locator("button")
bcount = await buttons.count()
for i in range(min(bcount, 10)):
btn = buttons.nth(i)
try:
text = await btn.inner_text()
print(f" [{i}] text={text.strip()[:50]}")
except:
pass
# 打印所有链接
print("\n--- 包含'智慧校园'的元素 ---")
campus = page.get_by_text("智慧校园", exact=False)
ccount = await campus.count()
print(f" 找到 {ccount} 个")
for i in range(min(ccount, 5)):
try:
text = await campus.nth(i).inner_text()
tag = await campus.nth(i).evaluate("el => el.tagName")
print(f" [{i}] tag={tag} text={text.strip()[:80]}")
except:
pass
# 截图
ss_path = os.path.join(os.environ.get("TEMP", ""), "debug_sandbox_page.png")
await page.screenshot(path=ss_path, full_page=True)
print(f"\n截图已保存: {ss_path}")
print("\n按回车关闭浏览器...")
input()
await close_browser_context(pw, context)
if __name__ == "__main__":
asyncio.run(main())