debug: gradual mouse movement + JS event dispatch + element hit info

This commit is contained in:
Oliver Hofmann 2026-05-17 17:43:04 +02:00
parent ad0a0d07b2
commit 9580a94e25

View File

@ -129,9 +129,31 @@ class Resolver:
if not strategy:
print(f" '{display_name}' nicht im sichtbaren Chat gefunden.")
return None
print(f" '{display_name}' via '{strategy}' bei {bbox} — warte auf Karte...")
x = bbox.get('x', 0) + bbox.get('w', bbox.get('width', 32)) / 2 if isinstance(bbox, dict) else 0
y = bbox.get('y', 0) + bbox.get('h', bbox.get('height', 32)) / 2 if isinstance(bbox, dict) else 0
print(f" '{display_name}' via '{strategy}' → Viewport ({x:.0f}, {y:.0f}) — warte auf Karte...")
# Screenshot right after hover for debugging
# Approach 1: gradual mouse movement (simulate human)
self._page.mouse.move(x - 50, y, steps=5)
time.sleep(0.1)
self._page.mouse.move(x, y, steps=10)
time.sleep(0.3)
# Approach 2: dispatch pointer/mouse events directly on element at that position
hit_info = self._page.evaluate(f"""() => {{
const el = document.elementFromPoint({x}, {y});
if (!el) return 'no element at position';
['pointerover','pointerenter','mouseover','mouseenter','pointermove','mousemove'].forEach(t => {{
el.dispatchEvent(new MouseEvent(t, {{
bubbles: true, cancelable: true, view: window,
clientX: {x}, clientY: {y}
}}));
}});
return el.tagName + '[' + (el.getAttribute('data-tid')||'') + '] ' + el.className.substring(0,60);
}}""")
print(f" Element bei ({x:.0f},{y:.0f}): {hit_info}")
# Screenshot after hover attempt
try:
from pathlib import Path as _Path
debug_dir = _Path("debug"); debug_dir.mkdir(exist_ok=True)
@ -140,7 +162,7 @@ class Resolver:
except Exception:
pass
time.sleep(0.5) # Give Teams time to register the hover
time.sleep(1.5) # Wait for hover card to fully appear
try:
# Stage 1: wait for card container to appear