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 typing import Optional
from dataclasses import dataclass 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 yaml
import click import click
from rich.console import Console from rich.console import Console
@ -54,6 +63,9 @@ logging.basicConfig(
) )
logger = logging.getLogger(__name__) 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 # Rich Console für schöne Ausgabe
console = Console() console = Console()

View File

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