send button with delay

This commit is contained in:
duffyduck 2025-12-27 02:03:00 +01:00
parent 90707055ce
commit 28d2bfe7d1
2 changed files with 42 additions and 54 deletions

View File

@ -31,6 +31,15 @@ from pathlib import Path
from typing import Optional
from dataclasses import dataclass
# ALSA/JACK Fehlermeldungen unterdrücken (harmlose Audio-Backend Warnungen)
# Muss VOR dem Import von Audio-Modulen passieren
from ctypes import CDLL, c_char_p, c_int
try:
asound = CDLL("libasound.so.2")
asound.snd_lib_error_set_handler(lambda *args: None)
except:
pass # Kein ALSA - kein Problem
import yaml
import click
from rich.console import Console
@ -54,6 +63,9 @@ logging.basicConfig(
)
logger = logging.getLogger(__name__)
# urllib3 Connection Pool Warnungen unterdrücken (Selenium-intern, harmlos)
logging.getLogger("urllib3.connectionpool").setLevel(logging.ERROR)
# Rich Console für schöne Ausgabe
console = Console()

View File

@ -191,47 +191,13 @@ class ClaudeChatInterface:
Returns:
True wenn erfolgreich gesendet
"""
try:
# Finde Eingabefeld
input_field = self._find_input_field()
# Nutze send_message_with_delay mit delay=0 (hat Retry-Logik eingebaut)
result = self.send_message_with_delay(text, delay_before_send=0)
if not input_field:
logger.error("Eingabefeld nicht gefunden!")
return False
# Feld fokussieren und leeren
input_field.click()
time.sleep(0.2)
# Text eingeben
input_field.send_keys(text)
time.sleep(0.5) # Warte bis Text vollständig eingegeben
# Versuche Send-Button zu klicken (zuverlässiger als Enter)
send_button = self._find_send_button()
if send_button:
try:
send_button.click()
logger.debug("Nachricht via Send-Button gesendet")
except Exception as e:
logger.debug(f"Send-Button Klick fehlgeschlagen: {e}, versuche Enter")
input_field.send_keys(Keys.RETURN)
else:
# Fallback: Enter-Taste
logger.debug("Kein Send-Button gefunden, nutze Enter")
input_field.send_keys(Keys.RETURN)
time.sleep(0.3)
logger.debug(f"Nachricht gesendet: {text[:50]}...")
if wait_for_response:
if result and wait_for_response:
self._wait_for_response()
return True
except Exception as e:
logger.error(f"Fehler beim Senden: {e}")
return False
return result
def send_message_with_delay(self, text: str, delay_before_send: int = 15) -> bool:
"""
@ -243,7 +209,7 @@ class ClaudeChatInterface:
Ablauf:
1. Text ins Eingabefeld einfügen
2. Warte delay_before_send Sekunden
3. Send-Button klicken
3. Send-Button klicken (mit Retry)
Args:
text: Die zu sendende Nachricht
@ -269,21 +235,31 @@ class ClaudeChatInterface:
input_field.send_keys(text)
# WARTEN - große Texte brauchen Zeit!
if delay_before_send > 0:
logger.info(f"Warte {delay_before_send}s vor dem Absenden (große Texte brauchen Zeit)...")
time.sleep(delay_before_send)
else:
time.sleep(1.0) # Mindestens 1s warten
# Jetzt absenden
# Jetzt absenden (mit Retry-Logik)
send_success = False
for attempt in range(3):
send_button = self._find_send_button()
if send_button:
try:
if send_button.is_enabled() and send_button.is_displayed():
send_button.click()
logger.info("Nachricht via Send-Button gesendet")
logger.info(f"Nachricht via Send-Button gesendet (Versuch {attempt + 1})")
send_success = True
break
except Exception as e:
logger.debug(f"Send-Button Klick fehlgeschlagen: {e}, versuche Enter")
input_field.send_keys(Keys.RETURN)
else:
logger.debug(f"Send-Button Klick Versuch {attempt + 1} fehlgeschlagen: {e}")
time.sleep(0.5)
# Fallback: Enter-Taste
logger.debug("Kein Send-Button gefunden, nutze Enter")
if not send_success:
logger.debug("Send-Button nicht gefunden/klickbar, nutze Enter")
input_field.send_keys(Keys.RETURN)
time.sleep(0.3)