send button with delay
This commit is contained in:
parent
90707055ce
commit
28d2bfe7d1
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue