Explorer
/tmp/aa023_browser.py
← Zurück ↓ Download
import json
from pathlib import Path
from playwright.sync_api import sync_playwright

base='https://sma.agentsolutions-mallorca.com/cockpit?days=1&sort=relevance&tab=radar'
results=[]
with sync_playwright() as p:
    browser=p.chromium.launch(headless=True)
    page=browser.new_page(viewport={'width':1440,'height':1000})
    errors=[]
    page.on('pageerror', lambda e: errors.append(str(e)))
    page.on('console', lambda m: errors.append(m.text) if m.type=='error' else None)
    page.goto(base, wait_until='networkidle')
    def snap(label):
        page.wait_for_timeout(100)
        active=page.locator('.f.on').all_text_contents()
        cards=page.locator('.sig:visible').count()
        api=page.evaluate("""async () => { const u=new URL('/api/signals',location.origin); u.search=location.search; u.searchParams.set('limit','100'); const r=await fetch(u); const x=await r.json(); return x.length; }""")
        results.append({'step':label,'url':page.url,'active':active,'api':api,'ui':cards,'errors':list(errors)})
        errors.clear()
    snap('Heute')
    for label in ['2T','3T','5T','7T','14T','5T']:
        page.get_by_text(label, exact=True).first.click(); page.wait_for_load_state('networkidle'); snap(label)
    for label, mode in [('Priorität','Priorität ↓'),('Priorität aus','Priorität ↓'),('Score','Score ↓'),('Score aus','Score ↓'),('Neu','Neu ↓'),('Neu aus','Neu ↓')]:
        page.get_by_text(mode, exact=True).click(); page.wait_for_load_state('networkidle'); snap(label)
    for label, mode in [('FB','FB · Filter'),('FB aus','FB · Filter'),('LI','LI · Filter'),('LI aus','LI · Filter'),('FB erneut','FB · Filter'),('LI Wechsel','LI · Filter'),('LI aus','LI · Filter')]:
        page.get_by_text(mode, exact=True).click(); page.wait_for_load_state('networkidle'); snap(label)
    page.reload(wait_until='networkidle'); snap('Reload')
    page.go_back(wait_until='networkidle'); snap('Back')
    page.go_forward(wait_until='networkidle'); snap('Forward')
    page.screenshot(path='/home/hermes/Antworten/AA-023-cockpit.png', full_page=True)
    browser.close()
Path('/home/hermes/Antworten').mkdir(parents=True,exist_ok=True)
Path('/home/hermes/Antworten/AA-023-browser.json').write_text(json.dumps(results,ensure_ascii=False,indent=2))
print(json.dumps({'steps':len(results),'last':results[-1],'screenshot':'/home/hermes/Antworten/AA-023-cockpit.png'},ensure_ascii=False))