ich habe folgende Aufgabenstellung:
In einem Formular in einem LogIn-Bereich sind in ein Eingabefeld mit der ID "tags" nacheinander Keywords einzutragen, die jeweils einzeln mit ENTER zu übernehmen sind. Händisch ist das extrem aufwändig, zumal die Keywords bereits als Liste vorliegen.
Angestrebte Lösung:
.. ist ein Python-Script, das bei geöffneter Webseite per Tastenkombination gestartet wird, aus einer vorgegebenen Textdatei die Keywords Zeile für Zeile einliest, den richtigen Browsertab identifiziert und dort jedes Keyword gefolgt von einem Enter einfügt.
Entwicklungsstand:
Mit Python befasse ich mich erst seit 2 Tagen und habe versucht, mit Hilfe von ChatGPT ein funktionierendes Script zu schreiben. Bisher leider ohne Erfolg. Das nachfolgende Script öffnet selbst ein neues Fenster, anstatt auf das geöffnete Fenster zuzugreifen. Mir fehlen hier offenbar fundamentale Kenntnisse. Ich wäre euch sehr dankbar, wenn ihr mir da ein wenig auf die Sprünge helfen könntet. Von ChatGPT muss ich mich erst mal ein wenig erholen

Code: Alles auswählen
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.service import Service
# Pfad zur keywords.txt-Datei
keyword_file_path = r"D:\Dokumente\Scripte\keywords.txt"
# Geckodriver-Service starten
service = Service(".\geckodriver.exe")
service.start()
# Firefox Webdriver initialisieren
driver = webdriver.Firefox(service=service)
# Auf das geöffnete Fenster zugreifen
driver.switch_to.window(window_handle)
assert "Upload Page" in driver.title
try:
# Eingabefeld finden
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "tags"))
)
# Keywords aus Datei lesen
with open(keyword_file_path, "r") as f:
keywords = [line.strip() for line in f]
# Keywords in das Eingabefeld eingeben und mit Enter bestätigen
for keyword in keywords:
elem = driver.find_element(By.ID, "tags")
elem.clear()
elem.send_keys(keyword)
elem.send_keys(Keys.RETURN)
# Warten, bis das Keyword im Eingabefeld erscheint
WebDriverWait(driver, 10).until(
EC.text_to_be_present_in_element((By.ID, "tags"), keyword)
)
finally:
# Geckodriver-Service beenden
driver.quit()
service.stop()